以下哪一項是反轉字符串中單詞的有效方法?哪些代碼更有效?
public String Reverse(StringTokenizer st){
String[] words = new String[st.countTokens()];
int i = 0;
while(st.hasMoreTokens()){
words[i] = st.nextToken();i++}
for(int j = words.length-1;j--)
output = words[j]+" ";}
OR
public String Reverse(StringTokenizer st, String output){
if(!st.hasMoreTokens()) return output;
output = st.nextToken()+" "+output;
return Reverse(st, output);}
public String ReverseMain(StringTokenizer st){
return Reverse(st, "");}
而第一種方式似乎更具可讀性和直接的,也有它兩個循環。在第二種方法中,我嘗試過使用尾遞歸的方法。但我不確定java是否會優化尾遞歸代碼。
找出問題的最佳方法是分析代碼並查看哪些代碼運行得更快。 – NickLH
請參見http://stackoverflow.com/questions/771092/is-method-a-faster-than-method-b – paxdiablo
'StringTokenizer'不被棄用,但是... * StringTokenizer是一個遺留類,由於兼容性原因而被保留儘管它在新代碼中的使用不受歡迎。建議任何需要此功能的人都使用String或java.util.regex包的拆分方法*(來自java文檔) –