字符串中指定部分进行反转

30 阅读1分钟

字符串指定部分进行反转--复习完自动装箱、拆箱,String类及其相关方法,Math类及其方法,StringBuilder、StringBuilder类以及Arrays类相关信息后,第一印象下进行的算法处理:

public class Homework {
    public static void main(String[] args) {
        String str = "abcdef";
        System.out.println("   输入字符串:" + str);
        System.out.println("反转后的字符串:" + reverse(str, 0, 4));
    }
    
    public static String reverse(String str, int start, int end) {
        if (str == null) {
            return null;
        }
        if (start > end) {
            return "start不能大于end";
        }
        if (start < 0 || end >= str.length()) {
            return "start及end不能越过数组下标范围";
        }
        // 字符串转换为字符数组
        char[] chars = str.toCharArray();
        // 交换总次数的计算 (end-start)/2.0 获取到double数值结果 向上取整
        int flag = (int)Math.ceil((end - start) / 2.0);
        // 字符数组内字符交换
        for (int i = 0; i < flag; i++) {
            char temp = chars[start];
            chars[start] = chars[end];
            char[end] = temp;
            start++;
            end--;
        }
        // 字符数组拼接为可变字符串对象,再转换为字符串对象
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            sb.append(chars[i]);
        }
        return sb.toString();
    }
}