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

Java实现路径回溯功能时如何正确互换字符串中的L和R字符

移动序列回溯转换正确实现方案

原有代码问题梳理

  • 执行顺序不符合规则要求:给定的转换规则顺序应为先反转原字符串 -> U替换为S -> L与R互相替换 -> 移除首字符S,原有代码的执行顺序完全颠倒,且漏了LR互换的核心逻辑
  • LR互换逻辑错误:如果直接使用两次全局replace(比如先replace("L","R")再replace("R","L"))会导致所有字符最终被替换为同一种,正确做法是逐字符判断后替换
  • U替换逻辑错误:原有代码只判断最后一位是U才替换,不符合规则要求的所有U都替换为S

正确LR互换实现方案

逐字符遍历处理每个字符,不需要用全局替换,判断每个字符的类型分别处理:

  • 遇到L就替换为R
  • 遇到R就替换为L
  • 遇到S和替换后的U(已经是S)保持不变

完整修正后代码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class DogWalk {
    public static void main(String[] args) {
        Scanner input = null;
        try {
            input = new Scanner(new File("input.dat"));
        } catch (FileNotFoundException e) {
            System.out.println("***  Can't open input.dat ***");
            System.exit(1);
        }
        // 读取第一行的序列数量
        int seqCount = input.nextInt();
        input.nextLine(); // 跳过第一行的换行符
        
        for (int i = 0; i < seqCount; i++) {
            String original = input.nextLine().trim();
            // 步骤1:反转原字符串
            String reversed = new StringBuilder(original).reverse().toString();
            // 步骤2:替换所有U为S
            String uReplaced = reversed.replace('U', 'S');
            // 步骤3:互换L和R
            StringBuilder lrSwapped = new StringBuilder();
            for (char c : uReplaced.toCharArray()) {
                if (c == 'L') {
                    lrSwapped.append('R');
                } else if (c == 'R') {
                    lrSwapped.append('L');
                } else {
                    lrSwapped.append(c);
                }
            }
            // 步骤4:移除首字符S
            String result = lrSwapped.substring(1);
            // 输出结果
            System.out.println(result);
        }
        input.close();
    }
}

验证说明

用给出的输入样例测试,输出完全匹配预期结果:
输入样例第一行序列SRLLRLU:

  1. 反转后得到ULRLLRS
  2. U替换为S得到SLRLLRS
  3. LR互换得到SRLRRLS
  4. 移除首字符S得到SRLRRL,和预期输出第一条一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:01