方法一:
ss存改变后的总字符串
将字符大小写反转后添加到str中,遇到空格则把str添加到ss的中,然后把str清空
最后ss添加剩余的str的字符串并返回
public String trans(String s, int n) {
StringBuffer ss=new StringBuffer();
StringBuffer str=new StringBuffer();
for (int i = n-1; i >= 0; i--) {
if(s.charAt(i)==' '){
ss.append(str.toString()+" ");
str=new StringBuffer();
}else {
//大小写反转
char sss = (char) (s.charAt(i) < 97 ? s.charAt(i) + 32 : s.charAt(i) - 32);
//将字符添加到str的首个位置保证单词不被反转
str.insert(0, sss);
}
}
return ss.append(str.toString()).toString();
}方法二:
只需要一个stringBuffer
需要在每个空格处记录下上一个单词的长度,然后从上一个单词长度后继续添加字符
public String trans(String s, int n) {
StringBuffer str=new StringBuffer();
int start=0;
for (int i = n-1; i >= 0; i--) {
if(s.charAt(i)==' '){
str.append(" ");
start=n-i;
}else {
char sss = (char) (s.charAt(i) < 97 ? s.charAt(i) + 32 : s.charAt(i) - 32);
str.insert(start, sss);
}
}
return str.toString();
}时间复杂度O(N)
空间复杂度o(N)

京公网安备 11010502036488号