You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java字符串区间反转代码无报错但未生效,请求问题排查

字符串区间反转代码问题排查与修复

问题背景

给定字符串my_string和二维数组queries,queries的每个元素为[s,e],表示将my_string中索引从s到e的部分反转,按queries的顺序处理后返回结果。示例输入:

  • my_string: "rermgorpsam"
  • queries: [[2, 3], [0, 7], [5, 9], [6, 10]]
    预期结果: "programmers"

编写的Java代码无语法错误,但运行后始终返回原字符串,需排查问题。

错误代码

import java.util.*;

class Solution {
    public String solution(String my_string, int[][] queries) {
        char[] charArr = my_string.toCharArray();

        for (int s = 0; s < queries.length; s++) {
            for (int e = 0; e < queries[s].length; e++) {
                reverse(charArr, queries[s][0], queries[s][1]);
            }
        }
        String answer = String.valueOf(charArr);
        return answer;
    }

    static void reverse(char[] arr, int s, int e) {

        char[] copy = Arrays.copyOfRange(arr, s, e);

        for (int i = 0; i < copy.length; i++) {
            arr[s + i] = copy[copy.length - (i + 1)];
        }
    }
}

问题分析

  1. 重复执行反转操作:外层循环遍历每个查询时,额外添加了内层循环遍历查询的两个元素(s和e),导致每个[s,e]区间被反转两次。两次反转会抵消修改效果,相当于没有执行反转。
  2. 数组拷贝范围错误:Arrays.copyOfRange(arr, s, e)的第二个参数是不包含的结束索引,而题目中e是需要包含的区间终点,因此应该使用Arrays.copyOfRange(arr, s, e+1),否则会遗漏e位置的字符,导致反转不完整。
  3. 反转逻辑冗余:额外拷贝数组的做法效率较低,直接在原数组上交换首尾元素即可完成反转。

修复后的代码

import java.util.*;

class Solution {
    public String solution(String my_string, int[][] queries) {
        char[] charArr = my_string.toCharArray();

        // 遍历每个查询,去掉多余的内层循环
        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];
            reverse(charArr, s, e);
        }
        return String.valueOf(charArr);
    }

    static void reverse(char[] arr, int s, int e) {
        // 原地反转,无需额外拷贝数组
        while (s < e) {
            char temp = arr[s];
            arr[s] = arr[e];
            arr[e] = temp;
            s++;
            e--;
        }
    }
}

代码说明

  • 移除了多余的内层循环,每个查询只执行一次反转操作。
  • 修改反转逻辑为原地交换:通过双指针从区间首尾向中间交换元素,避免额外数组开销,同时确保区间内所有元素都被正确反转。
  • 彻底解决了原代码中两次反转抵消、拷贝范围错误的问题,运行后可得到预期结果。

内容的提问来源于stack exchange,提问作者hehexd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:33:24