![](https://i-blog.csdnimg.cn/blog_migrate/be90512c08d5fcc4798ab73ca78ca1c9.png)
class Solution {
public void reverseString(char[] s) {
// 自增后赋值
for (int left = 0, right = s.length - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/8b889ee9f11bb63fb970eb608f4882e7.png)
class Solution {
public String reverseStr(String s, int k) {
char[] array = s.toCharArray();
//左指针是为了定义反转位置的开始,右指针定义反转位置的结束。
for (int i = 0; i < s.length(); i += 2 * k) {
// 这边的Math.min()起到的作用是,字符小于k时,全部反转的效果, 尾数够不够k个
reverse(array, i, Math.min(i+k, s.length()) -1);
}
return new String(array);
}
public void reverse(char[] array, int left, int right) {
while (left < right) {
char tmp = array[left];
array[left] = array[right];
array[right] = tmp;
left++;
right--;
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/75117f4802c540b0b200ec31593656e8.png)
class Solution {
public String pathEncryption(String path) {
StringBuilder result = new StringBuilder();
for (Character c : path.toCharArray()) {
if (c == '.') {
result.append(' ');
} else {
result.append(c);
}
}
return result.toString();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/73891ff6029f98a09f59a4c52b21c348.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be972ee5257dd47498251c6cc3d490d4.png)
class Solution {
public String reverseWords(String s) {
// 移除多余空格 -> 将整个字符串反转 -> 将每个单词反转
// 1.去除首尾以及中间多余空格
StringBuilder stringBuilder = removeSpace(s);
// 2.反转整个字符串
reverseString(stringBuilder, 0, stringBuilder.length() - 1);
// 3.反转各个单词
reverseEachWord(stringBuilder);
return stringBuilder.toString();
}
private StringBuilder removeSpace(String s) {
int start = 0;
int end = s.length() - 1;
while (s.charAt(start) == ' ') {
start++;
}
while (s.charAt(end) == ' ') {
end--;
}
StringBuilder stringBuilder = new StringBuilder();
while (start <= end) {
char c = s.charAt(start);
if (c != ' ' || stringBuilder.charAt(stringBuilder.length() - 1) != ' ') {
stringBuilder.append(c);
}
start++;
}
return stringBuilder;
}
public void reverseString(StringBuilder stringBuilder, int start, int end) {
while (start < end) {
char tmp = stringBuilder.charAt(start);
stringBuilder.setCharAt(start, stringBuilder.charAt(end));
stringBuilder.setCharAt(end, tmp);
start++;
end--;
}
}
public void reverseEachWord(StringBuilder stringBuilder) {
int start = 0;
int end = 1;
int n = stringBuilder.length();
while (start < n) {
while (end < n && stringBuilder.charAt(end) != ' ') {
end++;
}
reverseString(stringBuilder, start, end - 1);
start = end + 1;
end = start + 1;
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/10b57b9cac3147815472b56777135651.png)
class Solution {
public String dynamicPassword(String password, int target) {
String result = password.substring(target, password.length()) + password.substring(0, target);
return result;
}
}