字符串部分反转

2021-06-24  本文已影响0人  a半亩方塘
一、题目:将字符串指定部分反转,如"abcdefg"反转后为"abfedcg"
二、实现

1.把指定字符串先转化为一个char[]数组;
2.对需要反转的部分,进行数组元素遍历+反转;
3.将反转后的char[]数组再转换为String。

1.声明一个StringBuffer变量sb1;
2.把不需要反转的第一部分直接append到sb1;
3.把需要反转的第二部分按照倒序遍历,依次append到sb1;
4.把不需要反转的第三部分直接append到sb1;
5.把StringBuffer变量sb1转换为String对象返回。

1.声明一个StringBuilder变量sb2;
2.把不需要反转的第一部分直接append到sb2;
3.把需要反转的第二部分,先变成StringBuilder后使用reverse(),再append到sb2;
4.把不需要反转的第三部分直接append到sb2;
5.把StringBuilder变量sb2转换为String对象返回。

public class StringTest1 {
    //方式一:
    public String reverseTest(String str,int startIndex,int endIndex){
        if(str != null){
            char[] c1 = str.toCharArray();
            for(int i = startIndex,j=endIndex-1; i < j; i++,j--){
                char temp = c1[i];
                c1[i] =c1[j];
                c1[j] = temp;
            }
            return new String(c1);
        }
        return null;
    }
    //方式二:
    public String reverseTest1(String str, int startIndex, int endIndex){
        if(str != null){
            //第一部分
            StringBuffer sb1 = new StringBuffer();
            sb1.append(str.substring(0,startIndex));
            //第二部分
            for(int i = endIndex-1;i>=startIndex;i--){
                sb1.append(str.charAt(i));
            }
            //第三部分
            sb1.append(str.substring(endIndex));
            return new String(sb1);
        }else {
            return null;
        }
    }
    //方式三
    public String reverseTest2(String str, int startIndex, int endIndex){
        if(str != null){
            StringBuilder sb2 = new StringBuilder();
            //第一部分
            sb2.append(str.substring(0,startIndex));
            //第二部分
            sb2.append(new StringBuilder(str.substring(startIndex, endIndex)).reverse());
            //第三部分
            sb2.append(str.substring(endIndex));
            return new String(sb2);
        }else {
            return null;
        }
    }
    public static void main(String[] args) {
        String str = "abcdefg";
        StringTest1 t1 = new StringTest1();
        String s = t1.reverseTest(str, 2, 6);
        System.out.println(s);
    }
}
上一篇下一篇

猜你喜欢

热点阅读