Java如何交换字符串中两个位置的值
作者:腾阳山泥若
这篇文章主要介绍了Java如何交换字符串中两个位置的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Java交换字符串中两个位置的值
需求:
对一字符串abcd,要求交换位置0和位置2的两个字符,交换结果为cbad。
java高效实现方案
先将String转换为char数组,数组可以修改任意位置的值,进行常规的数组交换即可
public static void main(String[] args) {
String str = "abcd";
int i = 0, j = 2;
char[] strArray = str.toCharArray(); // 转换成数组
char temp = strArray[i];
strArray[i] = strArray[j];
strArray[j] = temp;
str = String.valueOf(strArray);
System.out.println(str);
}Java以字符串某一位置为界,将它之前的部分与之后的部分互换位置
需求:
给定一个字符串str和一个整数i,i代表字符串中某一个元素的下标,将str[0..i-1]移到这个元素的右侧,将str[i+1..len(str)-1]移到这个元素的左侧。
(要求:时间复杂度为O(N),空间复杂度为O(1))。
实现思路
以分割数为界,分为左侧和右侧,分别将左侧和右侧的字符串进行反转,然后将左侧和右侧分别看成一个整体,将左侧和右侧进行反转。
测试用例样例
- 输入:”abcde”, 2
- 预期结果: decab
下面是Java代码的实现:
public class TestReverse {
public static void main(String[] args) {
String str = "abcde";
System.out.println(replaceBeginAndEnd(str, 2));
}
public static String replaceBeginAndEnd(String str, int i) {
if (str == null || i < 0 || str.length() <= i) {
return str;
}
char[] chars = str.toCharArray();
reverseCharArray(chars, 0, i - 1);
reverseCharArray(chars, i + 1, chars.length - 1);
reverseCharArray(chars, 0, chars.length - 1);
return new String(chars);
}
private static void reverseCharArray(char[] chars, int begin, int end) {
char temp;
while (begin < end) {
temp = chars[begin];
chars[begin] = chars[end];
chars[end] = temp;
begin++;
end--;
}
}
}输出结果为:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
