【20230411每日面经】编程语言 - 校验回文

每日面经

  • 考察点:编程语言
  • 难度:简单
  • 题目:给定一个字符串,请编写程序代码来检查该字符串是否为回文。回文是指正着读和反着读都一样的词语或句子。

例如,字符串 “racecar” 和 “level” 都是回文,而 “hello” 不是。

提供一个 Java/Python 方法来检查给定字符串是否为回文。

public class PalindromeChecker {
    public static boolean isPalindrome(String str) {
        // 将输入字符串转为小写并去除非字母和数字的字符
        String cleanedStr = str.toLowerCase().replaceAll("[^a-z0-9]", "");

        // 使用双指针法检查是否为回文
        int left = 0;
        int right = cleanedStr.length() - 1;

        while (left < right) {
            if (cleanedStr.charAt(left) != cleanedStr.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }

        return true;
    }

    public static void main(String[] args) {
        String str1 = "A man a plan a canal Panama";
        String str2 = "Hello World";
        String str3 = "Madam, in Eden I'm Adam.";

        System.out.println(str1 + " is palindrome: " + isPalindrome(str1));
        System.out.println(str2 + " is palindrome: " + isPalindrome(str2));
        System.out.println(str3 + " is palindrome: " + isPalindrome(str3));
    }
}

def check_string(character_str: str):
    if character_str == character_str[::-1]:
        return True
    return False
3 Likes
public static boolean isPalindrome(String str) {
    // 检查传入的字符串是否为 null,如果是则返回 false
    if (str == null) {
        return false;
    }
    
    int length = str.length();
    
    // 使用一个 for 循环遍历字符串的前半部分,并检查每个字符是否与其对应的后半部分的字符相同
    for (int i = 0; i < length / 2; i++) {
        if (str.charAt(i) != str.charAt(length - i - 1)) {
            // 如果发现任何不匹配的字符,则返回 false
            return false;
        }
    }
    
    // 如果循环完成后没有发现不匹配的字符,则返回 true
    return true;
}