假设给出了一个len
n的字符串,对于其第一个和最后一个字符相同的每个子字符串,我应该将{1}添加到fx
并打印最终的fx
。
前往"ababaca" , f("a")=1 , f("aba")=1 , f("abaca")=1
,但f("ab")=0
n = int(raw_input())
string = list(raw_input())
f = 0
for i in range(n):
for j in range(n,i,-1):
temp = string[i:j]
if temp[0]==temp[-1]:
f+=1
print f
有没有什么方法可以为大字符串优化我的代码,因为我正在为许多测试用例抽出时间。
答案 0 :(得分:2)
您可以只计算每个字母的出现次数。例如,如果有n' a,则在字符串中将有n *(n-1)/ 2个子串,以' a'开头和结尾。你可以为每个字母做同样的事情,解决方案是线性的。
将len(string)
添加到获得的最终答案值中。