给定一个字符串数组,返回一个只包含回文的字符串数组

时间:2015-01-23 06:26:01

标签: java arrays string

用他提出的问题帮助朋友。对于我的生活,我可以弄清楚为什么我的代码不能正常工作,我确信这是非常简单的我只需要另外一双眼睛来看看它,

public String[] bahB(String[] arr) {
    int count=0;
    for (int j = 0; j < arr.length; j++) {
        String[] f = new String[arr[j].length()];
        for (int i = 0; i < arr[j].length(); i++) {
            f[i] = arr[j].substring(i, i + 1);
        }
        if(isPalindrome(f)){
            count++;
        }
    }
    String[] d = new String[count];
    int y=0;
    for (int j = 0; j < arr.length; j++) {
        String[] f = new String[arr[j].length()];
        for (int i = 0; i < arr[j].length(); i++) {
            f[i] = arr[j].substring(i, i + 1);
        }
        if(isPalindrome(f)){
          d[y]=arr[j];
          y++;
        }
    }
    return d;
}

public boolean isPalindrome(String[] x) {
    int s1 = 0;
    int s2 = x.length - 1;
    while (s2 > s1) {
        if (x[s1] != x[s2]) {
            return false;
        }
        ++s1;
        --s2;
    }
    return true;
}

我的代码开始于创建一个计数器,该计数器假定在给定的String数组中得到回文数量,这在Palindrome方法中不是问题所以它必须是这些行中的东西

  int count=0;
    for (int j = 0; j < arr.length; j++) {
        String[] f = new String[arr[j].length()];
        for (int i = 0; i < arr[j].length(); i++) {
            f[i] = arr[j].substring(i, i + 1);
        }
        if(isPalindrome(f)){
            count++;
        }

感谢任何花时间阅读此内容的人

1 个答案:

答案 0 :(得分:2)

我不确定你是如何决定“这不是Palindrome方法中的问题”,因为事实上,你的isPalindrome已经完全破碎了。这样:

        if (x[s1] != x[s2]) {

表示“如果x[s1]x[s2]是对String”的同一个实例的引用;而你的意思是“如果x[s1]x[s2]引用具有相同内容的String个实例”,即:

        if (!x[s1].equals(x[s2])) {

(但实际上,你不应该在这里使用String[];你应该使用char[],或String使用charAt。< / p>