繁体   English   中英

如何计算字符串中的子序列数?

[英]How to count the number of sub-sequences in a string?

该程序用于计算字符串中子字符串的数量。

测试用例:
字符串ABCDCDC
模式CDC

答案应该是2但我得到0

def count_substring(string, sub_string):
  for i in range(0,len(string)-len(sub_string)+1):
    count=0
    for j in range(0,len(sub_string)):
       if(string[i+j]!=sub_string[j]):
           break;
    if j==len(sub_string):
       count=count+1
    return count

for j in range(0,len(sub_string))循环中for j in range(0,len(sub_string))的末尾, j最多可以为len(sub_string)-1 (如果不早休息的话)。 因此, if j==len(sub_string):始终为False 您想要的if j==len(sub_string)-1:还是else:意味着您已经到达了for循环的末尾)。

同样, count = 0应该在开始而不是在第一个for循环中初始化:

def count_substring(string, sub_string):
    count=0
    for i in range(0,len(string)-len(sub_string)+1):
        for j in range(0,len(sub_string)):
            if(string[i+j]!=sub_string[j]):
                break;
        else:
            count=count+1
    return count

字符串是Python中1个字符的子字符串的序列,因此您可以使用内置的count()方法-换句话说,您不必重新发明轮子并编写自己的函数即可。

test_string = 'ABCDCDC'
sub_string = 'CDC'

print(test_string.count(sub_string))  # -> 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM