文字列を考えると、それは回文文字列であることを確認し、唯一のアルファベットと数字を検討し、大文字小文字を無視することができます。
説明:この問題では、我々は有効な回文配列として空の文字列を定義します。
例1:
入力:「男、計画、運河:パナマ」
出力:真の
例2:
入力:「カーレース」
出力:偽
思考:これは回文のタイトルの研究である、と文字列が回文であるかどうか、である最も単純な形態です。
この問題に対処するために、我々は、デュアルヘッドとテールポインタを使用することができます
- 2つのポインタが異なる要素がある場合、プロセスは直接、falseを返します
- 二つのポインタと同じ要素ならば、我々はまた、頭と尾のポインタのループを更新します。頭と尾のポインタ会う日まで。
class Solution {
public boolean isPalindrome(String s) {
int i=0;int j=s.length()-1;
while(i<j)
{
if(!Character.isLetterOrDigit(s.charAt(i))){
i++;
continue;
}
if(!Character.isLetterOrDigit(s.charAt(j))){
j--;
continue;
}
if(Character.toLowerCase(s.charAt(i))!=Character.toLowerCase(s.charAt(j)))
return false;
i++;j--;
}
return true;
}
}