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