python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Java交换字符串中两个位置的值

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))。

实现思路

以分割数为界,分为左侧和右侧,分别将左侧和右侧的字符串进行反转,然后将左侧和右侧分别看成一个整体,将左侧和右侧进行反转。

测试用例样例 

下面是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--;
        }
    }
}

输出结果为:

总结

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

您可能感兴趣的文章:
阅读全文