[LeetCode]Valid Palindrome

来源:互联网 发布:睿至大数据的骗局 编辑:程序博客网 时间:2024/06/05 00:19

题目:给定一个字符串,判断字符串是否为回文串(只考虑字符和数字,忽略大小写)

算法:设置两个索引,分别从两端向中间扫描,扫描的时候忽略字符和数字以外的一切。

需要注意的是,空字符串也是回文串,而且因为只考虑字符和数字,所以“*/*-”被视为空字符串,所以被认为是回文串

public class Solution {    /**     * Check if string is palindrome.     * <p>Empty String is palindrome,      * because palindrome only consider alphanumeric characters,     * so any string like "*-+*" is consider to be palindrome.      * @param s     * @return     */    public boolean isPalindrome(String s) {        if (null == s) {            return false;        }        if (s.equals("")) {            return true;        }                boolean isPalindrome = true;        int iHead = 0;        int iTail = s.length() - 1;        char[] strs = s.toLowerCase().toCharArray();        while (iHead <= iTail) {            while (iHead<strs.length                 && !Character.isLetter(strs[iHead])                && !Character.isDigit(strs[iHead])) {                ++iHead;            }            while (iTail >= 0                 && !Character.isLetter(strs[iTail])                && !Character.isDigit(strs[iTail])) {                --iTail;            }            if (iHead > iTail) {                break;            } else if (strs[iHead] != strs[iTail]) {                return false;            }                        ++iHead;            --iTail;        }// end of while                return isPalindrome;    }}

1 0