Java 打印交换键盘键后获得的文本 问题:

Java 打印交换键盘键后获得的文本 问题:,java,algorithm,Java,Algorithm,安迪和鲍勃从小就是朋友。但是,随着他们长大,鲍勃开始表现得很怪异,这让安迪很恼火。有一次,当安迪在输入一个大程序后休息时,鲍勃不知从哪里来,交换了安迪键盘上的一些字母键 安迪看到这件事非常生气,决定永远结束他们的友谊。众所周知,鲍勃心地善良,从不故意做错任何事。他决定用相同的键盘配置键入剩余的程序。给定Bob需要键入的原始代码片段,您需要告诉Bob他应该键入的代码,以将原始代码作为输出 帮助他挽救与安迪的友谊 输入: 输入的第一行包含一个整数N,表示Bob完成的交换次数。接下来的N行包含一对字符

安迪和鲍勃从小就是朋友。但是,随着他们长大,鲍勃开始表现得很怪异,这让安迪很恼火。有一次,当安迪在输入一个大程序后休息时,鲍勃不知从哪里来,交换了安迪键盘上的一些字母键

安迪看到这件事非常生气,决定永远结束他们的友谊。众所周知,鲍勃心地善良,从不故意做错任何事。他决定用相同的键盘配置键入剩余的程序。给定Bob需要键入的原始代码片段,您需要告诉Bob他应该键入的代码,以将原始代码作为输出

帮助他挽救与安迪的友谊

输入:

输入的第一行包含一个整数N,表示Bob完成的交换次数。接下来的N行包含一对字符a、B,表示由Bob交换的字符(注意Bob按给定顺序执行这些交换)。从下一行输入开始,代码的剩余片段以文件结尾字符开始和结束

输出:

打印Bob键入的程序片段

限制条件:


下面是我用Java编写的代码。它解决了基本输入问题,并适用于两种输入情况

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

class CharacterSwapping {
    public static void main(String args[]) {
        ArrayList<Character> orgnlAlphabets = new ArrayList<Character> ();
        orgnlAlphabets.add('A');
        orgnlAlphabets.add('B');
        orgnlAlphabets.add('C');
        orgnlAlphabets.add('D');
        orgnlAlphabets.add('E');
        orgnlAlphabets.add('F');
        orgnlAlphabets.add('G');
        orgnlAlphabets.add('H');
        orgnlAlphabets.add('I');
        orgnlAlphabets.add('J');
        orgnlAlphabets.add('K');
        orgnlAlphabets.add('L');
        orgnlAlphabets.add('M');
        orgnlAlphabets.add('N');
        orgnlAlphabets.add('O');
        orgnlAlphabets.add('P');
        orgnlAlphabets.add('Q');
        orgnlAlphabets.add('R');
        orgnlAlphabets.add('S');
        orgnlAlphabets.add('T');
        orgnlAlphabets.add('U');
        orgnlAlphabets.add('V');
        orgnlAlphabets.add('W');
        orgnlAlphabets.add('X');
        orgnlAlphabets.add('Y');
        orgnlAlphabets.add('Z');
        orgnlAlphabets.add('a');
        orgnlAlphabets.add('b');
        orgnlAlphabets.add('c');
        orgnlAlphabets.add('d');
        orgnlAlphabets.add('e');
        orgnlAlphabets.add('f');
        orgnlAlphabets.add('g');
        orgnlAlphabets.add('h');
        orgnlAlphabets.add('i');
        orgnlAlphabets.add('j');
        orgnlAlphabets.add('k');
        orgnlAlphabets.add('l');
        orgnlAlphabets.add('m');
        orgnlAlphabets.add('n');
        orgnlAlphabets.add('o');
        orgnlAlphabets.add('p');
        orgnlAlphabets.add('q');
        orgnlAlphabets.add('r');
        orgnlAlphabets.add('s');
        orgnlAlphabets.add('t');
        orgnlAlphabets.add('u');
        orgnlAlphabets.add('v');
        orgnlAlphabets.add('w');
        orgnlAlphabets.add('x');
        orgnlAlphabets.add('y');
        orgnlAlphabets.add('z');
        ArrayList<Character> swappedAlphabets = new ArrayList<Character> ();
        swappedAlphabets.addAll(orgnlAlphabets);

        try {
            //BufferedReader br = new BufferedReader(new FileReader("/tmp/characterswapping_input.txt"));
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            ArrayList<String> inputs = new ArrayList<String> ();
            String sCurrentLine;
            int glbLineCnt = 0;
            while ((sCurrentLine = br.readLine()) != null && !"".equals(sCurrentLine.trim())) {
                inputs.add(sCurrentLine.trim());
            }
            glbLineCnt = 0;
            sCurrentLine = inputs.get(glbLineCnt++);            
            int noOfSwapes = Integer.parseInt(sCurrentLine);
            while (noOfSwapes > 0) {
                sCurrentLine = inputs.get(glbLineCnt++);
                String firstLine[] = sCurrentLine.split(" ");
                int firstCharIndex = swappedAlphabets.indexOf(firstLine[0].charAt(0));
                int secondCharIndex = swappedAlphabets.indexOf(firstLine[1].charAt(0));
                swappedAlphabets.set(firstCharIndex, firstLine[1].charAt(0));
                swappedAlphabets.set(secondCharIndex, firstLine[0].charAt(0));
                noOfSwapes--;
            }
            sCurrentLine = inputs.get(glbLineCnt++);
            Character currentChar, orgnlChar;
            for (int i = 0; i < sCurrentLine.length(); i++) {
                currentChar = sCurrentLine.charAt(i);
                if (" ".equals(currentChar.toString())) {
                    System.out.print(" ");
                } else {
                    orgnlChar = orgnlAlphabets.get(swappedAlphabets.indexOf(currentChar));
                    System.out.print(orgnlChar);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
并给出正确的输出,如下所示:

HelloWorld
它也适用于其他输入 e、 g


但那个编码网站说,你的代码并不是适用于所有情况。因此,不确定此代码在哪种情况下会失败。

到目前为止,您尝试了什么?你给出了什么样的输入,得到了什么样的输出,告诉你出了什么问题?请说得更具体一些。@music\u编码器我在编程网站上提交了这个解决方案。提交后,我收到了错误的回复信息。它们不会显示失败的测试用例
1
W H
WelloHorld
HelloWorld
1
A B
B C

it gives output as 
A C