我做了採訪街頭問題string similarity。最初我在python中做了這個。這給了我最後5個測試用例的Time Limit Exceeded錯誤。然後我在java中嘗試了相同的方法,並且解決方案得到了接受。前5個測試用例的java和python版本之間的時間差異非常高,但對於前5個測試用例,python比較了java。爲什麼?爲什麼同樣算法的運行時差異很大?
字符串的長度可以去高達100000
stringsim.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
Solution.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);
}
}
}
Run time for java: 1 Success 0.172387 2 Success 0.172177 3 Success 0.172185 4 Success 0.172178 5 Success 0.263904 6 Success 2.82661 7 Success 4.66869 8 Success 4.83201 9 Success 1.36585 10 Success 1.02123 For python: 1 Success 0.081229 2 Success 0.081047 3 Success 0.081032 4 Success 0.081015 5 Success 0.910672 6 Time limit exceeded. 16.1818 7 Time limit exceeded. 16.2357 8 Time limit exceeded. 16.2001 9 Time limit exceeded. 16.2408 10 Time limit exceeded. 16.1831
而且錯誤 - 這段代碼提供的「解決方案」的**含義究竟是什麼? –
可能是JIT – nullpotent
爲了提高您獲得深刻見解的答案的機會,請發佈一個鏈接到輸入文件,並將您的數字時間度量值作爲表格發佈,突出顯示哪些單元格令人驚訝。沒有這些數據,你的具體問題很難回答。 – pts