
方法一:模拟
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb = new StringBuilder();
for (int i = n; i < s.length(); i++) {
sb.append(s.charAt(i));
}
sb.append(s.substring(0, n));
return sb.toString();
}
}
--取余简化
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb = new StringBuilder();
for (int i = n; i < n + s.length(); i++) {
sb.append(s.charAt(i % s.length()));
}
return sb.toString();
}
}
方法二:三次反转
class Solution {
public String reverseLeftWords(String s, int n) {
int len = s.length();
StringBuilder sb = new StringBuilder(s);
reverseString(sb, 0, n - 1);
reverseString(sb, n, len - 1);
return sb.reverse().toString();
}
public void reverseString(StringBuilder sb, int start, int end) {
while (start < end) {
char temp = sb.charAt(start);
sb.setCharAt(start, sb.charAt(end));
sb.setCharAt(end, temp);
start++;
end--;
}
}
}
本文探讨了三种高效的方法来反转字符串:模拟遍历、利用取余优化和通过三次反转操作。介绍了相应的代码实现,并对比了它们的效率和适用场景。

被折叠的 条评论
为什么被折叠?



