Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อค้นหาอักขระที่ไม่ซ้ำตัวแรกจากกระแสของอักขระ?


ในส่วนนี้ เราจะค้นหาอักขระที่ไม่ซ้ำหรือไม่ซ้ำกันตัวแรกจากสตริงหรือสตรีมของอักขระ มีหลายวิธีในการแก้ปัญหานี้ เราจะพยายามสร้างสองโปรแกรมที่แตกต่างกันสำหรับสตรีมของตัวละครเดียวกัน

วิธีที่ 1:การใช้ฟังก์ชัน

def firstNonRepeatingChar(str1):
   char_order = []
   counts = {}
   for c in str1:
      if c in counts:
         counts[c] += 1
      else:
         counts[c] = 1
         char_order.append(c)
   for c in char_order:
      if counts[c] == 1:
      return c
   return None

print(firstNonRepeatingChar('PythonforallPythonMustforall'))
print(firstNonRepeatingChar('tutorialspointfordeveloper'))
print(firstNonRepeatingChar('AABBCC'))

ผลลัพธ์

M
u
None

โปรแกรมด้านบนให้โซลูชัน O (n) ในโปรแกรมข้างต้น ก่อนอื่นเราจะวนซ้ำสตริงหนึ่งครั้ง เมื่อเราพบตัวละครใหม่แล้ว เราจะเก็บมันไว้ในจำนวนอ็อบเจกต์ที่มีค่า 1 และผนวกเข้ากับ char_order เมื่อเราพบอักขระที่ซ้ำกัน เราจะเพิ่มค่าของการนับขึ้น 1 ขั้น สุดท้าย เราวนซ้ำผ่าน char_order จนกว่าเราจะพบอักขระที่มีค่า 1 ใน char_order แล้วส่งคืน

วิธีที่ 2:การใช้ while loop

s = "tutorialspointfordeveloper"
while s != "":
   slen0 = len(s)
   ch = s[0]
   s = s.replace(ch, "")
   slen1 = len(s)
   if slen1 == slen0-1:
      print ("First non-repeating character is: ",ch)
      break;
   else:
   print ("No Unique Character Found!")

ผลลัพธ์

First non-repeating character is: u