zoukankan      html  css  js  c++  java
  • Leetcode Valid Palindrome

    我发现最近做题,我总是被“阵势”唬住,不管什么题,就先觉得自己不会了,不想去思考,这种习惯比较可怕。其实任何难题,只要你学会分解它,并逐一击破,其实你发现你是可以解决的。

    就像这道题,一个是要“删去”非正常字符例如':空格呀什么的,最后要的只有数字和字符。所以要有一个函数判断是否有效isValid。还有一点,就是大小写转换,坑爹C++里没有直接对字符串进行大小写转换的,刚开始看的是一个JAVA的代码。没错,我不是自己做出来的T.T,JAVA里是有对字符串进行大小写转换的。所以需要一个对字符转换的函数。其实有一个tolower的函数,当然你也可以进行c+32或者记不住的就是c-'A'+'a'。最后就是判断函数了,从第一个有效字符以及最后一个有效字符开始判断。附代码。

    class Solution {  
    public:  
        bool isValid(char c)  
        {  
            if('a' <= c && c <= 'z') return true;  
            if('A' <= c && c <= 'Z') return true;  
            if('0' <= c && c <= '9') return true;  
            return false;  
        }  
        char lowerCase(char c)  
        {  
            if('A' <= c && c <= 'Z') return c+32;  
            else return c;  
        }  
        bool isPalindrome(string s) {  
            if(s=="") return true;
            int l = 0;  
            int r = s.size()-1;  
    
            
            while(l < r)  
            {  
                while(!isValid(s[l])){ 
                    l++;  //去掉所有非正常字符,才开始比较
                    if(l>=r) return true; //比较结束前没有返回false就返回true
                }
                
                while(!isValid(s[r])){
                    r--;
                    if(l>=r) return true;
                }
                if(lowerCase(s[l]) != lowerCase(s[r]))  return false;
                l++;
                r--;
            }  
            return true;  
        }  
    }; 
  • 相关阅读:
    jq 切换功能toggle
    打开控制台F12弹出弹窗
    CSS解决无空格太长的字母,数字不会自动换行的问题
    微信公众号页面无法唤起输入框
    别人遇到的两条前端面试题
    在HTML打开已安装的App,未安装跳转到对应的下载链接
    promise的使用
    特殊的json对象转数组,最合成新的json数据
    Rem兼容知多少?
    parseInt的结果看不懂,请看我分析
  • 原文地址:https://www.cnblogs.com/LUO77/p/4930615.html
Copyright © 2011-2022 走看看