我寫了一個函數來做到這一點,它的工作原理;然而,我對我的功能的時間複雜性有點不確定。我覺得它效率很低,但我不確定這可能只是問題的本質。我想象有一種更好的方式來做到這一點,而不是我如何做到這一點。我最初的想法是,這將是O(n^2)的時間複雜性,但我認爲它可能實際上是最差的,因爲我使用了分裂函數。有什麼更好的方法來做到這一點?另外,我是否認爲這實際上比O(n^2)更差呢?我寫了一個函數,可以在保持單詞順序的同時,翻轉句子中每個單詞的字符。我不確定時間複雜度
public static String wordReverse(String string){
//Split the string into an array such that each word is an element in the array
String[] arr = string.split(" ");
String result = "";
//Iterate throught the elements in the array
for(String value : arr){
String word = "";
//Reverse the letters of the element, and append them to a temp string
for(int i = value.length(); i > 0; i--){
word += value.charAt(i-1);
}
//Build the result string
result += word += " ";
}
//Return result string
return(result);
}
使用'StringBuilder'而不是''串連接'',你可以將複雜度從二次方降低到線性。 –
@MarkoTopolnik不正確。無論如何,最終的字節碼會導致字符串連接被編譯爲使用StringBuilder。無需對其進行硬編碼。 – Jacob
@Jacob最終的字節碼不會做這種事情。成爲我的客人,並檢查出來。 Java編譯器不會做任何這樣的花哨分析,以實現中間結果不逃避方法。 –