44. 翻轉單詞序列
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
用空格分割字串後用stringbuilder變數從後往前遍歷陣列拼接
注意點:要用trim() 方法去除前後導空格, 並且單詞之間可能有多個空格,所以必須使用正規表示式來分割,單純的使用空格分割後面新增的時候必須判斷是否是空串
1class
solution 6//
用空格分割成陣列,空格可能有很多個,所以要用正規表示式
7 string splits = s.trim().split("[ ]+"); 8//
使用stringbilder進行拼接
9 stringbuilder sb = new stringbuilder("");
10for(int i = splits.length - 1; i >= 0; i--)15}
16return
sb.tostring();17}
18 }
leetcode 執行時間為8 ms - 16.63%, 空間為39.3 mb - 14.95%
時間複雜度:split()函式的時間複雜度為o(n), 一次遍歷陣列的時間複雜度為o(n), 所以總的時間複雜度為o(n)
空間複雜度:需要乙個額外的陣列來存放單詞,所以空間複雜度為o(n),倒序可以使用棧來實現,不過那樣會增加乙個o(n)的空間複雜度
1class
solution 6//
用空格分割成陣列,空格可能有很多個,所以要用正規表示式
7 string splits = s.trim().split(" "); 8//
使用stringbilder進行拼接
9 stringbuilder sb = new stringbuilder("");
10for(int i = splits.length - 1; i >= 0; i--)
1415
if(i > 0)18}
19return
sb.tostring();20}
21 }
leetcode 執行用時:1 ms - 100.00%, 空間為 38.9 mb - 57.82%,可以看到,執行時間短了很多
時間複雜度:split()函式的時間複雜度為o(n), 一次遍歷陣列的時間複雜度為o(n), 所以總的時間複雜度為o(n)
空間複雜度:需要乙個額外的陣列來存放單詞,所以空間複雜度為o(n),倒序可以使用棧來實現,不過那樣會增加乙個o(n)的空間複雜度
不使用split()函式,從後往前倒著遍歷,獲取到單詞就新增到結果字串中
1class
solution
6 s =s.trim();7//
兩個指標,i 和 j, 初始時都在末尾
8int i = s.length() - 1, j =i;
9 stringbuilder sb = new stringbuilder("");
10while(i >= 0)
15//
擷取[i+1, j+1)的子串到sb
1718
//跳過單詞間多餘的空格
19while(i >= 0 && s.charat(i) == ' ')
22 j =i;23}
24return
sb.tostring().trim();25}
26 }
leetcode 執行用時:3 ms - 65.01%, 空間為:39.2 mb - 16.37%
時間複雜度:遍歷了一遍字串,所以時間複雜度為o(n)
空間複雜度:o(1)
思路二和思路三均參考自:
劍指offer 44翻轉單詞順序列
題目描述 牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a stu...
劍指offer(44)翻轉單詞順序列
問題描述 牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a stu...
劍指offer44 翻轉單詞順序列
題目描述 牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a stu...