ホームページ >Java >&#&チュートリアル >文字列が回文であるかどうかを効率的に判断するにはどうすればよいですか?
文字列の回文を効果的にチェックする方法
文字列の回文をチェックするには、両方向で同じように読めるかどうかを検証する必要があります。このタスクへの簡単なアプローチは、文字列を文字配列に変換し、隣接する要素を比較することです。
このアプローチのサンプル実装は次のとおりです。
public class Aufg1 { // Main method for testing public static void main(String[] args) { String wort = "reliefpfpfeiller"; char[] warray = wort.toCharArray(); System.out.println(istPalindrom(warray)); } // Method for checking palindromes public static boolean istPalindrom(char[] word) { boolean palindrom = false; if (word.length % 2 == 0) { for (int i = 0; i < word.length / 2 - 1; i++) { if (word[i] != word[word.length - i - 1]) { return false; } else { palindrom = true; } } } else { for (int i = 0; i < (word.length - 1) / 2 - 1; i++) { if (word[i] != word[word.length - i - 1]) { return false; } else { palindrom = true; } } } return palindrom; } }
このコードは文字配列を反復処理します。 、両端の要素を比較して一致するかどうかを判断します。ただし、要素の先頭と末尾を同時に比較する、より最適化されたアプローチが存在します。
改善されたコード:
public static boolean istPalindrom(char[] word) { int i1 = 0; int i2 = word.length - 1; while (i2 > i1) { if (word[i1] != word[i2]) { return false; } ++i1; --i2; } return true; }
例:
入力文字列「andna」を例:
以上が文字列が回文であるかどうかを効率的に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。