判断字符串是否对称

简介

在计算机编程中,我们经常需要判断一个字符串是否对称。例如,"level" 和 "radar" 就是对称字符串,因为它们正读和反读都一样。而 "hello" 和 "world" 则不是对称字符串。

在本文中,我们将探讨如何使用Java编程语言来判断一个字符串是否对称,并提供相应的代码示例。

算法思路

判断一个字符串是否对称的一种常见方法是比较字符串的首尾字符。我们可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾,并依次比较它们所指向的字符。

具体的算法思路如下:

  1. 定义两个指针,一个指向字符串的首字符,一个指向字符串的末字符。
  2. 判断首尾字符是否相等,如果相等,则将两个指针分别向后和向前移动一位。
  3. 重复步骤2,直到指针相遇或者出现不相等的字符。
  4. 如果指针相遇,则说明字符串是对称的;如果出现不相等的字符,则说明字符串不对称。

代码示例

下面是一个使用Java实现的判断字符串是否对称的代码示例:

public class StringSymmetryChecker {
    public static boolean isSymmetrical(String str) {
        int i = 0;
        int j = str.length() - 1;
        
        while (i < j) {
            if (str.charAt(i) != str.charAt(j)) {
                return false;
            }
            
            i++;
            j--;
        }
        
        return true;
    }
    
    public static void main(String[] args) {
        String str1 = "level";
        String str2 = "hello";
        
        System.out.println(str1 + " is symmetrical: " + isSymmetrical(str1));
        System.out.println(str2 + " is symmetrical: " + isSymmetrical(str2));
    }
}

在上面的代码示例中,我们定义了一个 isSymmetrical 方法来判断一个字符串是否对称。该方法使用两个指针 ij 分别指向字符串的首字符和末字符。在一个循环中,我们比较 ij 指向的字符是否相等,如果不相等,则返回 false;如果相等,则将 i 向后移动一位,将 j 向前移动一位。当 ij 相遇时,循环结束,返回 true

main 方法中,我们分别使用对称和非对称的字符串来测试 isSymmetrical 方法,并输出结果。

总结

判断字符串是否对称是一个常见的编程问题,通过比较字符串的首尾字符,我们可以有效地判断一个字符串是否对称。在本文中,我们使用Java编程语言给出了一个判断字符串是否对称的算法思路,并提供了相应的代码示例。希望本文对理解和解决这类问题有所帮助。

参考资料

  • [GeeksforGeeks - Check if a string is palindrome](
  • [LeetCode - Valid Palindrome](