思路
- 转换大小写。遍历字符串,遇到小写字母,转换成大写,遇到大写字母,转换成小写,遇到空格正常不变。
- 反转整个字符串。
- 以空格为界限,对每一个单词单独进行反转。
import java.util.*;
public class Solution {
public String trans(String s, int n) {
int len = s.length();
StringBuilder res = new StringBuilder(len);
for(int i = 0; i < len; ++i){
char cur = s.charAt(i);
if(cur >= 'a' && cur <= 'z'){
res.append((char)(cur - 'a' + 'A'));
} else if(cur >= 'A' && cur <= 'Z'){
res.append((char)(cur - 'A' + 'a'));
} else{
res.append(cur);
}
}
res = res.reverse();
int i = 0;
int j = 0;
while(i < len){
j = i;
while(j < len && res.charAt(j) != ' '){
++j;
}
StringBuilder word = new StringBuilder(res.substring(i, j));
word = word.reverse();
res.replace(i, j, word.toString());
i = j + 1;
}
return res.toString();
}
}
总结
- 小写变大写:
ch = ch - 'a' + 'A'
- 大写变小写:
ch = ch - 'A' + 'a'
- 字符串反转:
str = str.reverse()
- 截取子串:
sub = str.substring(start, end)
- 子串替换:
str.replace(start, end, str1)