计算所有出现的前缀字符串

时间:2019-07-13 08:19:01

标签: python string optimization

查找在该位置出现的字母,并确定在该位置n之前出现的同一字母的出现次数。

输入:

  

长度= 9

     

string =“ abababbsa”

     

n = 9

输出:

  

3

说明:

nth位置9(即a)处找到字母。计算该索引3之前的所有出现次数。

代码:

length = int(input())
string = list(input())
n = int(input())
str1 = string[n-1]
print(string[0:n-1].count(str1))

上面的代码给出了TLE。我该如何优化呢?

2 个答案:

答案 0 :(得分:0)

好吧,如果您使用re(regex)

import re
length = int(input())
my_string = input('Enter your string')
n = int(input())
print(len(re.findall(my_string[n-1],my_string[:n-1])))

所以正在发生的事情是,我们通过将字符串切成n-1并获得列表的长度(所有出现)来找到n之前字符的所有出现。

答案 1 :(得分:0)

一种优化的方法是,尽管将其转换为列表,仍然照常使用字符串:

string = input()

现在的复杂度为O(n),其中n是输入位置,而在您的 的情况,因为该字符串已显式转换为列表,所以复杂度为 O(字符串的长度)。