【问题标题】:How to count the number of vowels in a substring? [duplicate]如何计算子字符串中元音的数量? [复制]
【发布时间】:2020-12-12 19:33:55
【问题描述】:

自然语言理解是自然语言处理的子领域,用于设计基于人工智能的应用程序的人们能够理解人类语言。 HashInclude 语音处理团队有一个名为 Virtual Assistant 的项目。对于这个项目,他们任命您为数据工程师(他非常了解通过编写高效代码来创建干净的数据集)。作为数据工程师,您的首要任务是制作元音识别数据集。在此任务中,您必须在给定字符串的所有可能子字符串中找到元音。对于每个给定的字符串,您必须打印元音的总数。

输入: 第一行包含一个整数 T,表示测试用例的数量。

接下来的每一行都包含一个字符串,该字符串包含小写和大写。

输出: 打印元音和。

每个测试用例的答案应打印在新行中。

输入约束

1

1

样本输入
1 巴克布

样本输出 16

现在我有 2 个问题要问

q1) 我自己想出了下面的代码,但我不知道如何编写总和代码,用于存储在“r”变量中的子字符串中找到的元音数量

q2) 在查找 'geeks' 的子字符串时,'e' 将重复两次,我想将第一次出现的 'e' 的总和加 1,而不是第二次出现。

 T=int(input())
 for i in range(T):
  print('Enter the string:')
  l=input().lower()
  r=[l[i:j] for i in range(len(l))
     for j in range(i+1,len(l)+1)]
  #print(r)
 for i in range(len(r)):
   if r[i] =='aeiou':
     sum += 1
 print(sum)

注意:我知道下面的代码,但我发现表达式“sum+=((n-i)*(i+1))”太难理解了

for _ in range(int(input())):
s=input()
n=len(s)
sum=0
for i in range(n):
    if s[i] in ("aeiouAEIOU"):
        sum+=((n-i)*(i+1))
print(sum)

【问题讨论】:

    标签: python list list-comprehension


    【解决方案1】:

    试试这个;

      for i in range(len(r)):
           if r[i] in 'aeiou':
             sum += 1
         print(sum)
    

    【讨论】:

      【解决方案2】:
      vowels = 'aeiou'
      
      result = sum(1 for i in teststring.lower() if i in vowels)
      

      【讨论】:

      • 尽管这更紧凑,但比仅使用简单的 for 循环要慢一些,尤其是对于短字符串,因为我们在构建生成器时需要一些开销。
      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2021-12-21
      相关资源
      最近更新 更多