По заданной строке определите, является ли это палиндромом, учитывая только буквенно-цифровые символы и игнорируя регистры - PullRequest
0 голосов
/ 14 октября 2019
class Solution {
    public boolean isPalindrome(String s) {
        String str = s.toLowerCase();
        int count = 0;
        boolean isfalse = true;
      char arr[] = new char[str.length()];
        for(int i = 0;i<str.length();){
            if(!Character.isLetter(str.charAt(i))){
                i++;
            }else{
                arr[count] = str.charAt(i);
                count++;
                i++;
            }
        }
        for(int i = 0;i<arr.length;i++){
            int j = arr.length-count;
            if(arr[i]==arr[j]){
                isfalse = true;
            }
        }
        return false;
    }
}

Может кто-нибудь сказать мне, почему мой код не работает, или он будет работать с массивом или нет. Любая помощь будет оценена

1 Ответ

1 голос
/ 14 октября 2019

Что бы ни случилось, ваш код всегда будет возвращать false. Поскольку вы не используете определенную переменную isFalse в качестве оператора return. Я взял ваш код, изменил последнюю часть, т.е. ваш цикл for, и преобразовал в цикл while, чтобы проверить равенство с обеих сторон, используя технику двойного указателя. Теперь это выглядит примерно так:

public static boolean isPalindrome(String s) {
    String str = s.toLowerCase();
    int count = 0;
    char arr[] = new char[str.length()];
    for(int i = 0;i<str.length();){
        if(!Character.isLetter(str.charAt(i)) && !Character.isDigit(str.charAt(i))){
            i++;
        }else{
            arr[count] = str.charAt(i);
            count++;
            i++;
        }
    }
    int i = 0;
    int j = count - 1;
    while (i < j) {
        System.out.println(arr[i] + " : " + arr[j]);
        if (arr[i] != arr[j])
            return false;
        i++;
        j--;
    }
    return true;
}

Попробуйте добавить их в свой код, и оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...