给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
 左括号必须以正确的顺序闭合。
 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
 输出: true
 示例 2:
输入: "()[]{}"
 输出: true
 示例 3:
输入: "(]"
 输出: false
 示例 4:
输入: "([)]"
 输出: false
 示例 5:
输入: "{[]}"
 输出: true
一道关于栈的题
提交的代码:
class Solution {
     public boolean isValid(String s) {
         int n = s.length();
          int i,j=0,flag=0;
          char[] x = new char[n];
          if(n==0)
          {
              return true;
          }
          if(n==1||s.charAt(0)==')'||s.charAt(0)==']'||s.charAt(0)=='}')
          {
              return false;
          }
          for(i=0;i<n;i++)
          {
              if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{')
              {
                  x[j++] = s.charAt(i);
              }
              else if(s.charAt(i)==')')
              {
                  if(j!=0&&x[j-1] =='(')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
              else if(s.charAt(i)==']')
              {
                  if(j!=0&&x[j-1] =='[')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
              else if(s.charAt(i)=='}')
              {
                  if(j!=0&&x[j-1] =='{')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
          }
          if(flag==1||j!=0)
          {
              return false;
          }
          else
          {
              return true;
          }
          
     }
 }
完整的代码:
 public class Solution20 {
      public static boolean isValid(String s) {
          int n = s.length();
          int i,j=0,flag=0;
          char[] x = new char[n];
          if(n==0)
          {
              return true;
          }
          if(n==1||s.charAt(0)==')'||s.charAt(0)==']'||s.charAt(0)=='}')
          {
              return false;
          }
          for(i=0;i<n;i++)
          {
              if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{')
              {
                  x[j++] = s.charAt(i);
              }
              else if(s.charAt(i)==')')
              {
                  if(j!=0&&x[j-1] =='(')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
              else if(s.charAt(i)==']')
              {
                  if(j!=0&&x[j-1] =='[')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
              else if(s.charAt(i)=='}')
              {
                  if(j!=0&&x[j-1] =='{')
                  {
                      j--;
                  }
                  else
                  {
                      flag = 1;
                      break;
                  }
              }
          }
          if(flag==1||j!=0)
          {
              return false;
          }
          else
          {
              return true;
          }
          
         }
      public static void main(String[] args)
      {
          String s = "()[]{}";
         // String s = "[](";
          System.out.println(isValid(s));
      }
 }