我做了面试街头问题字符串相似性。最初我是在 python 中执行此操作的。这给了我最后 5 个测试用例的 Time Limit Exceeded 错误。然后我在java中尝试了相同的解决方案并被接受。最后 5 个测试用例的 java 和 python 版本之间的时间差非常高,但前 5 个测试用例的 python 优于 java。为什么呢?
字符串的长度可以达到 100000。
字符串sim.py
N=int(raw_input())
while N!=0:
rootstr=[i for i in raw_input()]
solution=0
for i in xrange(len(rootstr)):
for j in xrange(i,len(rootstr)):
if(rootstr[j-i]==rootstr[j]):solution+=1
else:break
print solution
N-=1
解决方案.java:
class Solution{
public static void main(String[] args) {
java.util.Scanner sc=new java.util.Scanner(System.in);
int N=sc.nextInt(),sol;
while(N--!=0){
sol=0;
char[] s=sc.next().toCharArray();
for(int i=0;i<s.length;i++){
for(int j=i;j<s.length;j++){
if(s[j]==s[j-i]) sol++;
else break;
}
}
System.out.println(sol);
}
}
}
java的运行时间: 1 成功 0.172387 2 成功 0.172177 3 成功 0.172185 4 成功 0.172178 5 成功 0.263904 6 成功 2.82661 7 成功 4.66869 8 成功 4.83201 9 成功 1.36585 10 成功 1.02123 对于蟒蛇: 1 成功 0.081229 2 成功 0.081047 3 成功 0.081032 4 成功 0.081015 5 成功 0.910672 6 超出时间限制。16.1818 7 超出时间限制。16.2357 8 超出时间限制。16.2001 9 超出时间限制。16.2408 10 超出时间限制。16.1831