私の目標は、文字ではないものをすべてスキップしながら単語が回文かどうかをチェックするコードを作成することです。大文字と小文字も考慮していません。 私のメソッドに固執する必要がありますが、高度なコマンドを使用することはできませんが、私はこのコードを書く良い方法があると確信しています。 問題は、変数 "a"と "b"は決して変更されず、同じことを何度も何度もチェックし続けていることです。文字ではないものをスキップし、upp /小文字を気にしないPalindrome
public static void main(String[] args) {
String palindrom = "*0Anna'/";
boolean jeto = false;
for (int i = 0; i < palindrom.length()/2; i++) {
int j = palindrom.length() - 1 - i; // right side
int a = palindrom.charAt(i); // left side defined by charAt
int b = palindrom.charAt(palindrom.length() - 1 - i); // right side
defined by charAt
if (palindrom.charAt(i) - 32 == palindrom.charAt(palindrom.length() - 1 - i) || (int) palindrom.charAt(i) + 32 == (int) palindrom.charAt(palindrom.length() - 1 - i) || palindrom.charAt(i) == palindrom.charAt(palindrom.length() - 1 - i)) {
jeto = true;
} else {
jeto = false;
while (i < j) {
if (a < 65 || a > 90 && a < 97 || a > 122) {
i++; // checks the left side for "non-letters" => skip
}
if (b < 65 || b > 90 && b < 97 || b > 122) {
j--; // checks the right side for "non-letters" => skip
}
}
}
}
if (jeto) {
System.out.println("is");
} else {
System.out.println("isn't");
}
}
}
また、チェックする前にすべてを大文字に変換します。 – Randy
もちろん、非常に簡単な解決策です。唯一の問題は、これらのコマンドを使用することが許可されていないことです。私は私が持っている知識(私のコードで見ている)を持って行くべきです。 –
@Alexandr U Character.isAlphabetic()メソッドを使用できますか? – arjunsv3691