首页 > 代码库 > LeetCode题解

LeetCode题解

Reverse Words in a String

考虑几个特殊的情况
1.若字符窜s="  "
2.字符窜s=“a  b  d     e”
3.字符窜s=“ a”

class Solution {public:    void reverseWords(string &s) {    int i;    int cas=0;    string st[100];    s+= ;    for(i=0;i<s.size();i++)    {        if(i==0 && s[0]== ) continue;//排除掉首字符窜为空格        if(s[i]==  && s[i-1]== ) continue;//排除掉多个空格字符        if(s[i]==  && s[i-1]!= )        {            cas++;            continue;        }        st[cas]+=s[i];    }    s.clear();    if(cas==0) return ;    s+=st[cas-1];    for(i=cas-2;i>=0;i--)    {        if(st[i]!=" ")        {            s+= ;            s+=st[i];        }    }};};
View Code

Evaluate Reverse Polish Notation

考虑特殊情况
1.只有一个数字的时候
2.出现负数的情况

class Solution{public:    int evalRPN(vector<string> &tokens)    {       // if(tokens.size()==1) return tokens[0];        stack<int>S;        for(int i=0; i<tokens.size(); i++)        {            if(!(tokens[i][0]>=0 && tokens[i][0]<=9))            {                if((tokens[i][0]>=0 && tokens[i][0]<=9))                {                    int n;                    sscanf(tokens[i],"%d",&n);                    S.push(n);                }                else if(!(tokens[i][0]>=0 && tokens[i][0]<=9) && (tokens[i][1]>=0 && tokens[i][1]<=9))                {                    int n;                    sscanf(tokens[i],"%d",&n);                    S.push(n);                }                else                {                    int n,m;                    m=S.top();S.pop();                    n=S.top();S.pop();                    switch(tokens[i][0])                    {                    case +:S.push(m+n);break;                    case -:S.push(n-m);break;                    case *:S.push(n*m);break;                    case /:S.push(n/m);break;                    }                }            }        }        return S.top();    }};
View Code