LeetCode 20191116

  1. 有效的括号
    这道题已经解出
    但是最后的最后 我还是理解错了题意
    但还是使用栈 来解决
class Solution {
public:
    bool isValid(string s) {
        int l=s.size();
        if(l==0){return true;}
        stack<char>insort;
        int inverse;
        for(int i=0;i<l;i++){
            if(s[i]=='('||s[i]=='['||s[i]=='{'){
                insort.push(s[i]);
            }
            else{
                inverse=i;
                break;
            }
        }
        int l_stack=insort.size();
        string inver_s;
        for(int i=0;i<l_stack;i++){
            inver_s.push_back(insort.top());
            insort.pop();
        }
        if(l_stack!=l-inverse){return false;}
        for(int i=0;i<l_stack;i++){
            if((inver_s[i]=='('&&s[inverse+i]==')')
            ||(inver_s[i]=='['&&s[inverse+i]==']')||
            (inver_s[i]=='{'&&s[inverse+i]=='}')){
              continue;  
            }
            else{return false;}
        }
        return true;
    }
};

然后 正确答案请参考下面

class Solution {
public:
    bool isValid(string s) {
        stack<char> symbols;
        for(int i = 0; i < s.size(); i++){
            if(s[i] == '(' || s[i] == '[' || s[i] == '{')
                symbols.push(s[i]);
            else{
                if(symbols.size() == 0)
                    return false;

                char match;
                if(s[i] == ')')
                    match = '(';
                else if(s[i] == ']')
                    match = '[';
                else if(s[i] == '}')
                    match = '{';
                char c = symbols.top();
                symbols.pop();

                if(c != match)
                    return false;
            }

        }
        if(symbols.size() != 0)
            return false;

        return true;
    }
};

2.整数反转
注意1:这个主要是需要进行递归思想
通过不断取余来更新值 而且通过乘10来进行移位
注意2:同时注意 要避免溢出的condition

class Solution {
public:
    int reverse(int x) {
        int fanz=0;
        int c;
        int flag=x<0?-1:1;
        while(x&&x<INT_MAX){
            c=fanz;
            
            if((flag==-1&& INT_MIN/10>fanz)||
                (flag==1 &&INT_MAX/10<fanz)){
                return 0;
            }
            fanz=fanz*10+x%10;
            x=x/10;
        }        
        return fanz;
    }
};
发布了44 篇原创文章 · 获赞 9 · 访问量 3358

猜你喜欢

转载自blog.csdn.net/puying1/article/details/103100290