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

如何通过递归实现移除字符串指定字符并将其移至末尾

递归实现指定字符移至字符串末尾

我来帮你调整这段递归代码,实现把指定字符移到字符串末尾的功能——你的需求是保留非目标字符的原有顺序,同时把所有目标字符集中放到字符串最后,比如removeChar("hello world, let's go!",'l')要返回"heo word, et's go!llll"对吧?

你的原代码是直接删除目标字符,我们只需要修改递归逻辑,不是删掉目标字符,而是把它“挪”到递归处理后的结果末尾就行。

修改后的递归代码

public static String removeChar(String word, char charToRemove) {
    // 遍历字符串寻找第一个目标字符
    for (int i = 0; i < word.length(); i++) {
        if (word.charAt(i) == charToRemove) {
            // 剥离当前目标字符,得到剩余待处理的子字符串
            String remainingStr = word.substring(0, i) + word.substring(i + 1);
            // 递归处理剩余字符串,再把当前目标字符追加到结果末尾
            return removeChar(remainingStr, charToRemove) + charToRemove;
        }
    }
    // 递归终止条件:字符串中已无目标字符,直接返回原串
    return word;
}

逻辑拆解

  • 终止条件:当遍历完整个字符串都没找到目标字符时,说明所有目标字符已经被移到末尾了,直接返回当前字符串即可。
  • 递归过程:每找到一个目标字符,先把它从当前字符串中剥离出来,递归处理剩下的子字符串;等子字符串处理完成后,再把这个目标字符追加到结果的最后。每一层递归都会完成一个目标字符的“搬运”,最终所有目标字符都会集中在字符串末尾。

测试验证

比如调用removeChar("you should not go",'o'):

  1. 第一次找到索引1的'o',处理剩余字符串"yu should not go",递归后返回处理结果,再加上'o'
  2. 递归过程会重复这个操作,直到所有'o'都被移到末尾,最终得到"yu shuld nt goooo",完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:59:45