zoukankan      html  css  js  c++  java
  • leetcode — valid-palindrome

    /**
     * Source : https://oj.leetcode.com/problems/valid-palindrome/
     *
     *
     * Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
     *
     * For example,
     * "A man, a plan, a canal: Panama" is a palindrome.
     * "race a car" is not a palindrome.
     *
     * Note:
     * Have you consider that the string might be empty? This is a good question to ask during an interview.
     *
     * For the purpose of this problem, we define empty string as valid palindrome.
     *
     *
     */
    public class ValidPalindrome {
    
        /**
         * 判断一个字符串是否是回文字符串,只判断字符串里面的字母和数字
         *
         * @param str
         * @return
         */
        public boolean valid (String str) {
            int left = 0;
            int right = str.length()-1;
            while (left <= right) {
                // 过滤左边非数字字母
                while (left < str.length() && !isAlphanumeric(str.charAt(left))) {
                    left++;
                }
                // 过滤右边非数字字母
                while (0 < right && !isAlphanumeric(str.charAt(right))) {
                    right--;
                }
                if (left >= right) {
                    return true;
                }
                if (Character.toLowerCase(str.charAt(left++)) != Character.toLowerCase(str.charAt(right--))) {
                    return false;
                }
            }
            return true;
        }
    
    
        public boolean isAlphanumeric (char c) {
            if ((c >= 48 && c <= 57) || ((c >= 65 && c <= 90) || (c >= 97 && c<= 122))) {
                return true;
            }
            return false;
        }
    
        public static void main(String[] args) {
            ValidPalindrome validPalindrome = new ValidPalindrome();
            System.out.println(validPalindrome.valid("A man, a plan, a canal: Panama") + "-----true");
            System.out.println(validPalindrome.valid("race a car") + "-----false");
        }
    
    }
    
  • 相关阅读:
    小米面试之股票收益最大
    第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe
    第三周 anaconda的安装
    第二周:python实现线性回归(哑变量回归)的高效方法
    第一周:在python里调用C文件中函数
    13G:神奇的数列
    13F:图像分割
    13E:吃奶酪
    13D:拖延症
    13B:回文子串
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7849758.html
Copyright © 2011-2022 走看看