美文网首页
字符串部分反转

字符串部分反转

作者: a半亩方塘 | 来源:发表于2021-06-24 15:55 被阅读0次
    一、题目:将字符串指定部分反转,如"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);
        }
    }
    

    相关文章

      网友评论

          本文标题:字符串部分反转

          本文链接:https://www.haomeiwen.com/subject/lytgyltx.html