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

Kiểm tra xem một chuỗi có phải là tên đã nhập của tên đã cho bằng Python hay không

Giả sử chúng ta có hai chuỗi chữ thường s và t. Đôi khi, khi chúng ta nhập một nguyên âm, phím có thể bị nhấn lâu và nguyên âm đó sẽ được lặp lại 1 hoặc nhiều lần. Chúng ta phải kiểm tra xem liệu t có được nhập cho biết s hay không.

Vì vậy, nếu đầu vào là s =​​"mine" t ="miiine", thì đầu ra sẽ là True vì nguyên âm 'i' được lặp lại ba lần, các chữ cái khác cũng được.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • s_len:=kích thước của s
  • t_len:=kích thước của t
  • j:=0
  • đối với tôi trong phạm vi từ 0 đến s_len - 1, thực hiện
    • nếu s [i] không giống với t [j], thì
      • trả về Sai
    • nếu s [i] không phải là nguyên âm thì
      • j:=j + 1
      • chuyển sang lần lặp tiếp theo
    • cnt_1:=1
    • trong khi i
    • cnt_1:=cnt_1 + 1
    • i:=i + 1
  • cnt_2:=1
  • while j
  • cnt_2:=cnt_2 + 1
  • j:=j + 1
  • nếu cnt_1> cnt_2, thì
    • trả về Sai
  • trả về True
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    def isVowel(c):
       vowel = "aeiou"
       return c in vowel
    def solve(s, t):
       s_len = len(s)
       t_len = len(t)
       j = 0
       for i in range(s_len):
          if s[i] != t[j]:
             return False
          if isVowel(s[i]) == False:
             j = j + 1
             continue
          cnt_1 = 1
          while i < s_len - 1 and (s[i] == s[i + 1]):
             cnt_1 = cnt_1 + 1
             i = i + 1
          cnt_2 = 1
          while j < t_len - 1 and t[j] == s[i]:
             cnt_2 = cnt_2 + 1
             j = j + 1
          if cnt_1 > cnt_2:
             return False
       return True
    s = "mine"
    t = "miiine"
    print(solve(s, t))

    Đầu vào

    "mine", "miiine"

    Đầu ra

    True