012 staticメンバ(staticメソッド) 004 解答例

public class StringUtils {
    // staticメソッド - 与えられた文字列が回文かどうかを判定するメソッド
    public static boolean isPalindrome(String str) {
        // 入力文字列から非アルファベット文字を削除し、小文字に変換
        str = str.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
        
        // 文字列を前後から比較して回文か判定
        int left = 0;
        int right = str.length() - 1;
        while (left < right) {
            if (str.charAt(left) != str.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }

    // staticメソッド - 与えられた文字列を逆さまにするメソッド
    public static String reverseString(String str) {
        // 文字列を逆順にして新しい文字列を生成
        StringBuilder reversed = new StringBuilder();
        for (int i = str.length() - 1; i >= 0; i--) {
            reversed.append(str.charAt(i));
        }
        return reversed.toString();
    }

    // staticメソッド - 与えられた文字列内で指定された文字が出現する回数を数えるメソッド
    public static int countOccurrences(String str, char target) {
        // 文字列内で指定された文字が出現する回数をカウント
        int count = 0;
        for (char ch : str.toCharArray()) {
            if (ch == target) {
                count++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        // テスト
        String palindromeTest = "A man, a plan, a canal, Panama!";
        System.out.println("Is \"" + palindromeTest + "\" a palindrome? " + isPalindrome(palindromeTest));

        String reverseTest = "Hello, World!";
        System.out.println("Reversed \"" + reverseTest + "\": " + reverseString(reverseTest));

        String countTest = "Programming is fun!";
        char targetChar = 'g';
        System.out.println("Occurrences of '" + targetChar + "' in \"" + countTest + "\": " + countOccurrences(countTest, targetChar));
    }
}

この解答例では、StringUtilsクラスに3つの静的メソッドが含まれています。それぞれが回文判定、文字列逆転、文字の出現回数のカウントを行います。mainメソッドではこれらのメソッドをテストしています。

「012 staticメンバ」問題集リスト