输入一个整数k和字符串,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。用Java编写
时间: 2024-09-30 17:07:52 浏览: 25
输入一个字符串,取出其中的整数(实现代码)
5星 · 资源好评率100%
在Java中,你可以通过循环和String的substring、reverse以及StringBuilder(或StringBuffer在旧版本Java中)来实现这个功能。下面是一个简单的示例函数:
```java
public class Main {
public static void main(String[] args) {
System.out.println(reverseKGroups("abcdefg", 2)); // 输出 "bacdfeg"
System.out.println(reverseKGroups("hello world", 4)); // 输出 "ehllo dlrow"
}
public static String reverseKGroups(String s, int k) {
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < s.length(); i += 2 * k) {
if (i + k > s.length()) { // 如果当前组超过字符串长度,只反转剩余部分
sb.replace(i, i + Math.min(k, s.length() - i), sb.substring(i).reverse().toString());
} else { // 正常情况,反转前k个字符
sb.replace(i, i + k, sb.substring(i, i + k).reverse().toString());
if (i + k < s.length()) {
sb.replace(i + k, i + 2 * k, s.substring(i + k));
}
}
}
return sb.toString();
}
}
```
在这个函数中,我们首先创建一个StringBuilder的副本,然后遍历字符串,每次移动`2k`个位置。如果遇到不足`2k`的情况,我们就只反转剩余的部分。如果超过`2k`但不足两倍,就先反转前`k`个,再保留后面的字符不变。
阅读全文