Leetcode 之Length of Last Word(38)

做法很巧妙。分成左右两个对应的部分,遇到左半部分则入栈,遇到右半部分则判断对应的左半部分是否在栈顶。注意最后要判断堆栈是否为空。

 bool isValid(const string& s)
      {
          string left = "([{";
          string right = ")]}";
          stack<char> stk;

          for (auto c : s)
          {
              if (left.find(c) != string::npos)
              {
                  stk.push(c);
              }
              else
              {
                  if (stk.empty() || stk.top() != left[right.find(c)])
                      return false;
                  else
                      stk.pop();
              }
          }

          return stk.empty();
      }
View Code

 

posted @ 2016-05-26 15:34  牧马人夏峥  阅读(114)  评论(0编辑  收藏  举报