Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để Tìm ký tự không lặp lại đầu tiên từ một luồng ký tự?

Trong phần này, chúng ta sẽ tìm ký tự duy nhất hoặc không lặp lại đầu tiên từ một chuỗi hoặc dòng ký tự. Có nhiều cách để giải quyết vấn đề này. Chúng tôi sẽ cố gắng tạo hai chương trình khác nhau cho cùng một luồng ký tự.

Phương pháp 1:Sử dụng hàm

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'))

Kết quả

M
u
None

Chương trình trên cho O (n) nghiệm. Trong chương trình trên, đầu tiên chúng ta lặp qua chuỗi một lần. Khi chúng tôi tìm thấy một ký tự mới, chúng tôi lưu trữ nó trong đối tượng counts với giá trị là 1 và thêm nó vào char_order. Khi chúng ta bắt gặp một ký tự lặp lại, chúng ta tăng giá trị của số đếm lên 1. Cuối cùng, chúng ta lặp qua char_order cho đến khi chúng ta tìm thấy một ký tự có giá trị 1 trong char_order và trả lại nó.

Phương pháp 2:Sử dụng vòng lặp while

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!")

Kết quả

First non-repeating character is: u