1. 程式人生 > >leetcode 557. 反轉字串中的單詞 III(Reverse Words in a String III)

leetcode 557. 反轉字串中的單詞 III(Reverse Words in a String III)

給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

示例 1:

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"

注意:在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。

原題連結

思路

先spilt分隔空格,呼叫自己寫的反轉函式,最後用空格連接回來,StringBuilder在多次修改字串時效率更高

class Solution {
    public String reverseWords(String s) {
        String[] word = s.split(" ");
        for(int i=0;i<word.length;i++)
        	word[i] = reverse(word[i]);
      
        StringBuilder ans = new StringBuilder(word[0]);
        for(int i=1;i<word.length;i++)
        	ans.append(" "+word[i]);
        return ans.toString();
    }
    
    String reverse(String s) {
    	
    	char[] ch = s.toCharArray();
    	int n = ch.length;
    	for(int i=0;i<n/2;i++) {
    		char c = ch[i];
    		ch[i] = ch[n-1-i];
    		ch[n-1-i] = c;
    	}
    	return String.valueOf(ch);
    }
}