题解 | #字符串变形#
字符串变形
https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @param n int整型
* @return string字符串
*/
public String trans (String s, int n) {
// 这里千万不要定义成String,否则通过不了案例,我之前就是因为这个问题,一直过不了
StringBuffer res = new StringBuffer();
// 这里也一样,原因是因为String拼接会每次都创建一个字符串
StringBuffer tmp = new StringBuffer();
// 从后往前遍历字符串
for (int i = n - 1; i >= 0; i--) {
char c = s.charAt(i);
if (c >= 'a' && c <= 'z') {
// 将小写转大写
tmp.append((char)(c - 'a' + 'A'));
} else if (c >= 'A' && c <= 'Z') {
// 将大写转小写
tmp.append((char)(c - 'A' + 'a') );
} else if (c == ' '){
// 遇到空格说明一个单词已经转写完成,需要存储起来,注意这里要reverse
res.append(tmp.reverse() + " ");
// 将tmp重新初始化,以方便下一个字符串的转写
tmp = new StringBuffer();
}
}
// 注意最终结果要加上tmp,因为如果最后一个单词没有空格,那个最后一个就没有存储在res里,这里要添加上
return res.append(tmp.reverse()).toString();
}
}