この投稿では、面接でよくある質問、つまり指定された文字列が回文かどうかを確認する方法について説明します。この問題は、Java のポインター、ループ、条件付きロジックを理解するための優れた練習になります。
指定された文字列が回文であるかどうかを確認する Java メソッドを作成します。 回文は、前から見ても後ろから読んでも同じ単語またはフレーズです (例: 「正午」または「マダム」)。
このソリューションでは、2 ポインター手法 を利用して、文字列の両端から中央に向かって文字をチェックします。対応する位置にある文字を比較することで、文字列を反転することなく、その文字列が回文であるかどうかを判断できます。
解決策のコードは次のとおりです:
public class StringPalindromeQuestion { // Method to check if a given string is a palindrome private boolean isPalindrome(String string) { if (string != null) { for (int i = 0, j = string.length() - 1; i < string.length() / 2; i++, j--) { if (string.charAt(i) != string.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { StringPalindromeQuestion palindrome = new StringPalindromeQuestion(); String oddString = "abcdcba"; // Palindrome with odd length String evenString = "abccba"; // Palindrome with even length String nonPalindrome = "asfgsa"; // Not a palindrome // Result: true System.out.println(palindrome.isPalindrome(oddString)); // Result: true System.out.println(palindrome.isPalindrome(evenString)); // Result: false System.out.println(palindrome.isPalindrome(nonPalindrome)); // Testing with null // Result: true System.out.println(palindrome.isPalindrome(null)); } }
1. 2 点アプローチ:
2 つのポインターを初期化します。1 つは先頭 (i)、もう 1 つは末尾 (j) です。
これらの位置 (string.charAt(i) と string.charAt(j)) の文字を比較し、比較するたびに i をインクリメントし、j をデクリメントします。
ループは string.length() / 2 までのみ実行され、長さが奇数か偶数かに関係なく効率的な走査が保証されます。
2.奇数と偶数の長さ:
偶数長文字列 (例: "abccba") の場合、メソッドは中間点までチェックするため、中間の文字がチェックされないままになることはありません。
奇数長文字列 (例: "abcdcba") の場合、当然のことながら、中央の文字は回文ステータスに影響しません。
3. Null 処理:
このメソッドは、NullPointerException を回避するために、最初に文字列が null かどうかをチェックします。
奇数長の回文: "abcdcba" は true を返します。
偶数長回文: "abccba" は true を返します。
非回文: "asfgsa" は false を返します。
Null String: true を返します (この実装では、null 入力は回文とみなされます)。
2 ポインター手法を理解することは、多くの文字列ベースの問題を効率的に解決するために役立ちます。この手法は、余分なスペースの複雑さを回避し、不必要な比較を制限することでコードの実行を高速化します。
このソリューションは、Java で回文をチェックするクリーンで効率的な方法を提供します。ポインター操作と文字列トラバーサルの理解をさらに深めるために、さまざまな文字列入力でこのアプローチを試してみてください。
コーディングを楽しんでください!
以上が文字列: 回文のチェックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。