字符串反转操作:Java 多种方法

package time_3_30;

/*
    将字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为“abfedcg”
 */

public class StringDemo {
    public static void main(String[] args) {
        String str = new String("abcdefghi");

        Reverse rev = new Reverse();
        String str2 = rev.reverse(str,1,6); //反转字符串str[1,6)位置上的字符
        System.out.println(str2);

        Reverse1 rev1 = new Reverse1();
        String str3 = rev1.reverse(str2,1,6);
        System.out.println(str3);
    }

}

//方式一:将String转换为数组再反转
class Reverse{
    public String reverse(String str, int start, int end){
        if(str != null && str.length() != 0){
            char[] arr = str.toCharArray();     //将引用类型转换为数组;
            for(int x = start,y = end; x <= y/2; x++){
                char temp = arr[x];
                arr[x] = arr[y-x];
                arr[y-x] = temp;

            }
            return new String(arr);     //返回新的字符串
        }
        return null;

    }
}
//方式二:将需要反转的字符串反转,不需要反转的不操作
class Reverse1{
    public String reverse(String str, int start, int end){
        if(str != null && str.length() != 0){
            //第一部分  取出str第一位到start(不包括start)
            String reverseStr = str.substring(0,start);

            //第二部分
            for(int i = end-1; i>=start; i--){      //遍历需要反转的字符,从最后一位开始加入
                reverseStr += str.charAt(i);
//                reverseStr += str.substring(i,i+1);

            }
            //第三部分
            reverseStr += str.substring(end);   //将尾部不需要遍历字符串再加进来
            return  reverseStr;
        }

        return null;
    }
}

//方式三:在二的基础上进行优化
class Reverse2 {
    public String reverse(String str, int start, int end) {
        if (str != null && str.length() != 0) {
            StringBuilder builder = new StringBuilder(str.length());

            //第一部分
            builder.append(str.substring(0, start));

            for (int i = end - 1; i >= start; i--) {      //遍历需要反转的字符,从最后一位开始加入
                builder.append(str.charAt(i));
            }

            //第三部分
            builder.append(str.substring(end));   //将尾部不需要遍历字符串再加进来
            return new String(builder);
        }
        return null;
    }
}




你可能感兴趣的:(java,算法)