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--; } } }
输出结果为:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。