FooBar java反向字母代码
我一直在努力让这段代码为GoogleFoobar挑战工作,但我无法通过十个隐藏测试用例中的两个。代码希望您接收一个字符串,并通过向后提取字母表中的等效字母并用它替换来“解码”它。此代码忽略大写字母和标点符号FooBar java反向字母代码,java,Java,我一直在努力让这段代码为GoogleFoobar挑战工作,但我无法通过十个隐藏测试用例中的两个。代码希望您接收一个字符串,并通过向后提取字母表中的等效字母并用它替换来“解码”它。此代码忽略大写字母和标点符号 public static void main(String[] args) { System.out.println(answer("wrw blf hvv ozhg mrtsg'h vkrhlwv?")); } public static String answ
public static void main(String[] args)
{
System.out.println(answer("wrw blf hvv ozhg mrtsg'h vkrhlwv?"));
}
public static String answer(String s) {
String decode = "";
char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
char[] alphabet2 = "zyxwvutsrqponmlkjihgfedcba".toCharArray();
for(int i = 0; i < s.length(); i++)
{
int cint = (int)s.charAt(i);
boolean b = Character.isUpperCase(s.charAt(i));
if(b)
{
decode = decode + s.charAt(i);
}
if(!Character.isDigit(s.charAt(i)) && !Character.isLetter(s.charAt(i)))
{
decode = decode + s.charAt(i);
}
else
{
if(!b)
{
int h = search(s.charAt(i), alphabet);
decode = decode + alphabet2[h];
}
}
}
return decode;
// Your code goes here.
}
public static int search(char x, char[] y)
{
int p = 0;
for(int o = 0; o < y.length; o++)
{
if(y[o] == x)
{
p = o;;
}
}
return p;
}
publicstaticvoidmain(字符串[]args)
{
系统输出打印LN(回答(“wrw blf hvv ozhg mrtsg'h vkrhlwv?”);
}
公共静态字符串应答(字符串s){
字符串解码=”;
char[]alphabet=“abcdefghijklmnopqrstuvxyz”。toCharArray();
char[]alphabet2=“zyxwvutsrqponmlkjihgfedcba.toCharArray();
对于(int i=0;i
您的代码不会忽略数字。现在,abc1234def
-->zyxzzwvu
,我假设它应该是zyx1234wvu
试着简化你的代码。在加入之前花些时间考虑一下。到处都是乱七八糟的if语句会使事情更难理解和调试
public static String answer2(String s)
{
String decoded = "";
String alphabet = "abcdefghijklmnopqrstuvwxyz";
String alphabet2 = "zyxwvutsrqponmlkjihgfedcba";
for (char c : s.toCharArray()) {
if (c < 'a' || c > 'z') {
// This is not a letter. Just repeat it verbatim.
decoded += c;
} else {
// This is a letter. Flipify it.
int pos = alphabet.indexOf(c);
decoded += alphabet2.charAt(pos);
}
}
return decoded;
}
公共静态字符串应答器2(字符串s)
{
已解码字符串=”;
字符串字母表=“abcdefghijklmnopqrstuvxyz”;
字符串alphabet2=“zyxwvutsrqponmlkjihgfedcba”;
for(char c:s.toCharArray()){
如果(c<'a'| c>'z'){
//这不是一封信,请逐字重复。
解码+=c;
}否则{
//这是一封信,翻一下。
int pos=字母表indexOf(c);
解码+=字母2.字符(pos);
}
}
返回解码;
}
如果此代码失败,那么很可能您没有完全描述问题约束。也许需要一些复制+粘贴。问题是它只编码字母表中的字母(实际上,只编码小写字母),那么检查数字有什么意义呢?