给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
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;}