我一直试图让这段代码适用于Google foobar挑战,但我无法通过十个隐藏的测试用例中的两个。代码希望您输入一个字符串并解码'它通过向后取字母的等效字母并用它替换它。此代码忽略大写字母和标点符号。
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;
}
答案 0 :(得分:0)
您的代码不会忽略数字。现在,abc1234def
- &gt; zyxzzzzwvu
,我认为它应该是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;
}
如果此代码失败,那么很可能您没有完全描述问题约束。也许有些复制+粘贴是有序的。