检查Python中字符串是否为给定名称的输入名称


假设我们有两个小写字符串s和t。有时,当我们输入元音时,按键可能会长时间按下,并且元音会重复一次或多次。我们必须检查t是否可能代表s的输入。

因此,如果输入类似于s = "mine" t = "miiine",则输出将为True,因为元音'i'重复了三次,其他字母都正常。

为了解决这个问题,我们将遵循以下步骤:

  • s_len := s的长度
  • t_len := t的长度
  • j := 0
  • 对于范围从0到s_len - 1的i,执行:
    • 如果s[i]与t[j]不同,则
      • 返回False
    • 如果s[i]不是元音,则
      • j := j + 1
      • 进行下一次迭代
    • cnt_1 := 1
    • 当i < s_len - 1且s[i]与s[i + 1]相同时,执行:
      • cnt_1 := cnt_1 + 1
      • i := i + 1
    • cnt_2 := 1
    • 当j < t_len - 1且t[j]与s[i]相同时,执行:
      • cnt_2 := cnt_2 + 1
      • j := j + 1
    • 如果cnt_1 > cnt_2,则
      • 返回False
  • 返回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

更新于:2020年12月29日

437 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.