import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param n int整型 * @return string字符串 */ public String trans (String s, int n) { // write code here // 1.先大小写反转 char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { if (chars[i] >= 'a' && chars[i] <= 'z') { // 转大写 chars[i] = (char) ('A' + (chars[i] - 'a')); } else if (chars[i] >= 'A' && chars[i] <= 'Z') { // 转小写 chars[i] = (char) ('a' + (chars[i] - 'A')); } } String convert = new String(chars); // 2.再整体反转 // 字符串的拼接(add)、反转(reverse)、按索引替换(replace),推荐使用StringBuilder。 StringBuilder reverse = new StringBuilder(convert); reverse.reverse(); // 3.最后局部反转 for (int i = 0; i < reverse.length(); i++) { if (reverse.charAt(i) != ' ') { // 当前字符非空格 int j = i + 1; while (j < reverse.length() && reverse.charAt(j) != ' ') { // 若j未出界且j非空格,则不断往后移动j j++; } // 此时j移动到空格或j已经出界,可作为String类的subString方法和StringBuilder的replace方法的第二个索引参数 StringBuilder sub = new StringBuilder(reverse.substring(i, j)); reverse.replace(i, j, sub.reverse().toString()); // 将j赋给i,检测下一个非空格区间 i = j; } } return reverse.toString(); } }