📅  最后修改于: 2023-12-03 14:50:36.051000             🧑  作者: Mango
在做字符串处理的时候,经常会遇到需要翻转字符串的情况,有些情况下还需要保留空格的位置。本文将介绍如何在反转字符串的同时保留空格位置。
我们可以通过将字符串转换为字符数组,然后从头尾开始扫描数组,将字符和空格分别存放在不同的数组中,然后再将两个数组合并即可。
具体步骤如下:
char[] charArray = str.toCharArray();
char[] chars = new char[charArray.length];
char[] spaces = new char[charArray.length];
int j = 0;
for (char c : charArray) {
if (Character.isWhitespace(c)) {
spaces[j] = c;
} else {
chars[j] = c;
}
j++;
}
for (int i = 0; i < chars.length / 2; i++) {
char temp = chars[i];
chars[i] = chars[chars.length - i - 1];
chars[chars.length - i - 1] = temp;
}
char[] result = new char[charArray.length];
int k = 0;
for (int i = 0; i < spaces.length; i++) {
if (spaces[i] != 0) {
result[i] = spaces[i];
} else {
result[i] = chars[k];
k++;
}
}
String reversedStr = new String(result);
public static String reverseString(String str) {
char[] charArray = str.toCharArray();
char[] chars = new char[charArray.length];
char[] spaces = new char[charArray.length];
int j = 0;
for (char c : charArray) {
if (Character.isWhitespace(c)) {
spaces[j] = c;
} else {
chars[j] = c;
}
j++;
}
for (int i = 0; i < chars.length / 2; i++) {
char temp = chars[i];
chars[i] = chars[chars.length - i - 1];
chars[chars.length - i - 1] = temp;
}
char[] result = new char[charArray.length];
int k = 0;
for (int i = 0; i < spaces.length; i++) {
if (spaces[i] != 0) {
result[i] = spaces[i];
} else {
result[i] = chars[k];
k++;
}
}
return new String(result);
}
String str = "Hello world!";
System.out.println(reverseString(str)); // 输出"dlrow olleH !"
通过将字符串转换成字符数组,可以更加灵活地进行字符串处理。本文介绍了如何在反转字符串的同时保留空格的位置,希望能够帮助到大家。