我在输入此代码后运行代码
4 qwertyuiopasdfghjklzxcvbnm
Ph
Pcssi
Bpke_kdc_epclc_jcijsc_mihyo?
Ipp!
输出
Hg
Hmllg
Vham akm mhmlm hmghlm dggng?
Ghh!
何时输出
Hi
Hello
What are these people doing?
Ohh!
public static void main(String[] args)
{
String input="";
int cases= sc.nextInt();
String al= sc.next();
String upAl= al.toUpperCase();
char [] upAlph = upAl.toCharArray();
char[] alph = al.toCharArray();
for(int i=0; i<cases; i++)
{
input=sc.next();
input=input.replace("a", ""+ alph[0]);
input=input.replace("b", ""+ alph[1]);
input=input.replace("c", ""+ alph[2]);
input= input.replace("d", ""+ alph[3]);
input= input.replace("e", ""+ alph[4]);
input= input.replace("f", ""+ alph[5]);
input= input.replace("g", ""+ alph[6]);
input= input.replace("h", ""+ alph[7]);
input= input.replace("i", ""+ alph[8]);
input= input.replace("j", ""+ alph[9]);
input= input.replace("k", ""+ alph[10]);
input=input.replace("l", ""+ alph[11]);
input=input.replace("m", ""+ alph[12]);
input=input.replace("n", ""+ alph[13]);
input= input.replace("o", ""+ alph[14]);
input=input.replace("p", ""+ alph[15]);
input= input.replace("q", ""+ alph[16]);
input=input.replace("r", ""+ alph[17]);
input= input.replace("s", ""+ alph[18]);
input=input.replace("t", ""+ alph[19]);
input=input.replace("u", ""+ alph[20]);
input=input.replace("v", ""+ alph[21]);
input=input.replace("w", ""+ alph[22]);
input=input.replace("x", ""+ alph[23]);
input=input.replace("y", ""+ alph[24]);
input=input.replace("z", ""+ alph[25]);
input=input.replace("A", upAlph[0]+"");
input=input.replace("B", upAlph[1]+"");
input=input.replace("C", upAlph[2]+"");
input=input.replace("D", upAlph[3]+"");
input=input.replace("E", upAlph[4]+"");
input=input.replace("F", upAlph[5]+"");
input=input.replace("G", upAlph[6]+"");
input=input.replace("H", upAlph[7]+"");
input=input.replace("I", upAlph[8]+"");
input=input.replace("J", upAlph[9]+"");
input=input.replace("K", upAlph[10]+"");
input=input.replace("L", upAlph[11]+"");
input=input.replace("M", upAlph[12]+"");
input=input.replace("N", upAlph[13]+"");
input=input.replace("O", upAlph[14]+"");
input=input.replace("P", upAlph[15]+"");
input=input.replace("Q", upAlph[16]+"");
input=input.replace("R", upAlph[17]+"");
input=input.replace("S", upAlph[18]+"");
input=input.replace("T", upAlph[19]+"");
input=input.replace("U", upAlph[20]+"");
input=input.replace("V", upAlph[21]+"");
input=input.replace("W", upAlph[22]+"");
input=input.replace("X", upAlph[23]+"");
input=input.replace("Y", upAlph[24]+"");
input=input.replace("Z", upAlph[25]+"");
input=input.replace("_", " ");
pw.println(input);
}
}
答案 0 :(得分:4)
问题是你要在String#replace
的每次后续调用中替换已经被替换的字母,从而有效地混淆了字母。您需要标记已经替换的字母的位置。
在这种情况下,我使用StringUtils
,例如(已省略上限):
StringUtils.replaceChars("ph", "abcdefghijklmnopqrstuvwxyz", "qwertyuiopasdfghjklzxcvbnm")
输出:
hi