题解 | 字符串变形
字符串变形
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) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
if (Character.isUpperCase(s.charAt(i))) {
sb.append(Character.toLowerCase(s.charAt(i)));
} else if (Character.isLowerCase(s.charAt(i))) {
sb.append(Character.toUpperCase(s.charAt(i)));
} else {
sb.append(s.charAt(i));
}
}
String[] split = sb.toString().split(" ", -1);
Collections.reverse(Arrays.asList(split));
return String.join(" ", split);
}
}
Java中的String.split()方法有两个重载形式,第二种重载split(String regex, int limit)
- 功能:根据给定的正则表达式拆分字符串,通过 limit 控制拆分次数和结果处理。
参数 limit 说明:
- limit > 0:模式最多应用 limit - 1 次,数组长度不超过 limit,最后一个元素包含所有未拆分的剩余内容。
- limit = 0:默认情况。应用尽可能多的次数,尾部空字符串被丢弃。
- limit < 0:应用尽可能多的次数,尾部空字符串会被保留。
所以直接让limit = -1就可以保留末尾的空字符串了。
Collections.reverse(Arrays.asList(split));可以将数组内元素翻转。
Arrays.asList(split) 返回的是一个 受原数组支持的 List 视图,List 的元素 = 数组 split 的元素,它们指向同一块内存,所以可以翻转数组元素。
而另外两种List是不可以的:
• new ArrayList<>(Arrays.asList(split)) 会创建新数组 → 不会影响原数组
• List.of(...) 是不可变的 → reverse 会报错


