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