清晰易懂,簡單高效!
大體思路:
每次截取到想要的單詞,拼接到新的sb中,過程中伴隨雙指針進行空格位置指向控制,
其中如果start指針如果==0的情況要放在第一個判斷條件防止邊界條件失效,并且這種情況下截取的是最后一個單詞,此時不需要加額外空格。
class Solution {public String reverseWords(String s) {s = s.trim();StringBuilder sb = new StringBuilder();int end = s.length() - 1;int start = end;while(start >= 0){//這里分四種情況來決定每次截取新的字符串位置if(start == 0) {sb.append(s.substring(start, end + 1));start--;} else if(s.charAt(start) !=' ') {start--;} else if(s.charAt(start) == ' '){sb.append(s.substring(start + 1, end + 1) + " ");while(start >=0 && s.charAt(start) == ' ')start--;end = start;} ?elsestart--;}return sb.toString();}
}