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

ตรวจสอบว่าสตริงเป็นชื่อที่พิมพ์ของชื่อที่ระบุใน Python . หรือไม่


สมมติว่าเรามีสตริงตัวพิมพ์เล็กสองตัว s และ t บางครั้ง เมื่อเราพิมพ์สระ คีย์อาจถูกกดค้างไว้ และสระจะถูกทำซ้ำ 1 ครั้งขึ้นไป เราต้องตรวจสอบว่าเป็นไปได้ไหมที่ t จะเป็นตัวระบุ s หรือไม่

ดังนั้น หากอินพุตเป็นเหมือน s ="mine" t ="miiine" ผลลัพธ์จะเป็น True เนื่องจากสระ 'i' ซ้ำ 3 ครั้ง ตัวอักษรอื่นๆ ก็ใช้ได้

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • s_len :=ขนาดของ s
  • t_len :=ขนาดของเสื้อ
  • j :=0
  • สำหรับฉันในช่วง 0 ถึง s_len - 1 ทำ
    • ถ้า s[i] ไม่เหมือนกับ t[j] แล้ว
      • คืนค่าเท็จ
    • ถ้า s[i] ไม่ใช่เสียงสระ ดังนั้น
      • j :=j + 1
      • ติดตามตอนต่อไป
    • cnt_1 :=1
    • ในขณะที่ i
    • cnt_1 :=cnt_1 + 1
    • ผม :=ผม + 1
  • cnt_2 :=1
  • ในขณะที่ j
  • cnt_2 :=cnt_2 + 1
  • j :=j + 1
  • ถ้า cnt_1> cnt_2 แล้ว
    • คืนค่าเท็จ
  • คืนค่า True
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

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

    อินพุต

    "mine", "miiine"

    ผลลัพธ์

    True