方法一:
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)