FooBar java反向字母代码

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

我一直在努力让这段代码为GoogleFoobar挑战工作,但我无法通过十个隐藏测试用例中的两个。代码希望您接收一个字符串,并通过向后提取字母表中的等效字母并用它替换来“解码”它。此代码忽略大写字母和标点符号

        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);
}
}
返回解码;
}

如果此代码失败,那么很可能您没有完全描述问题约束。也许需要一些复制+粘贴。

问题是它只编码字母表中的字母(实际上,只编码小写字母),那么检查数字有什么意义呢?