給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。
class Solution {public String reverseWords(String s) {StringBuffer res = new StringBuffer();int length = s.length();int i = 0;while(i < length){int start = i;while(i<length&&s.charAt(i)!=' '){i++;}for(int j = i-1;j>=start;j--){res.append(s.charAt(j));}if(i<length&&s.charAt(i)==' '){res.append(' ');i++;}}return res.toString();}
}
代碼二
(寫出代碼一的13天后)
class Solution {public String reverseWords(String s) {String[] str = s.split(" ");StringBuffer buffer = new StringBuffer();for(int i =0;i<str.length;i++){StringBuffer temp = new StringBuffer(str[i]);buffer.append(temp.reverse().toString());buffer.append(" ");}return buffer.toString().trim();}
}
1.String類
s.split(" ")可以按照空格分割字符串,返回一個字符串數組
public String[] split(String regex) {//注意括號中是字符串,要用雙引號return split(regex, 0);}
2.StringBuffer類
StringBuffer temp = new StringBuffer(str[i]);
定義時,new StringBuffer(String str);括號中是字符串
3.StringBuffer類
temp.reverse().toString()
1)反轉reverse(),無參數,返回的還是.StringBuffer類
public synchronized StringBuffer reverse() {toStringCache = null;super.reverse();return this;}
2)轉化為String類,toString(),無參數,返回String類
public synchronized String toString() {if (toStringCache == null) {return toStringCache =isLatin1() ? StringLatin1.newString(value, 0, count): StringUTF16.newString(value, 0, count);}return new String(toStringCache);}
4.StringBuffer類
buffer.append(" "),添加元素,參數需是String類
public synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this;}