1

大文字/小文字、句読点、スペースは無視してください。これが私がそれを呼び出したいコードです:

public static boolean isPal(String s)
{
    if(s.length() == 0 || s.length() == 1)
        return true;
    if(s.charAt(0) == s.charAt(s.length()-1))
        return isPal(s.substring(1, s.length()-1));
    return false;
} 
4

3 に答える 3

5

次の行を追加してみてください。

s = s.toLowerCase().replaceAll("[\\p{Punct}\\s]", "");

メソッドの開始時。

于 2013-02-10T16:48:58.827 に答える
1

最も簡単な方法は、文字列を小文字または大文字に変換して、すべての比較を行うことです。

public static boolean isPal(String s)
    {

        s = s.toLowerCase().replaceAll("[^a-z]", "");

        // Or if you want to allow digits
        //s = s.toLowerCase().replaceAll("[^\\w]", "");


        // Do all your comparisons
    } 
于 2013-02-10T16:48:25.900 に答える
1

文字列をどちらのケースにも変換して、処理に使用できます -

public static boolean isPal(String s) {
    s = s.toLowerCase(); // or  s.toUpperCase()

    if(s.length() == 0 || s.length() == 1)
        return true;
    if(s.charAt(0) == s.charAt(s.length()-1))
        return isPal(s.substring(1, s.length()-1));
    return false;
} 

また、句読点を無視するには、以下に示す正規表現を使用できます。無視する必要のある文字を追加し、バックスラッシュを使用してエスケープします\

[?:\\/\.]

メソッドに追加して、replaceAll() 何も置き換えません。

于 2013-02-10T16:55:37.750 に答える