(){}[] 正确
{(){}}  正确
{}[{}] 正确
[()] 正确
[(){}] 正确
[(())] 正确
 
{() 错误
()[]{ 错误判断是否成对出现的字符串

解决方案 »

  1.   

    不涉及嵌套检查的话,可以这样计算 String ss ="(){}[]";
    int[] counters={0,0,0}; //  ({[
    for (int i=0;i<ss.length();i++){

    if (ss.charAt(i)=='('){
    counters[0]++;
    }
    if (ss.charAt(i)==')'){
    counters[0]--;
    }

    }
    最后counters数组都是0 就正确
      

  2.   

    public static void main(String[] args) {
    List l = Arrays.asList(-1,-2,-3);
    List<String> a1 = Arrays.asList("{","(",")","{","}","}");
    List aNew = new ArrayList();
    for(int i=0;i<a1.size();i++) {
    aNew.add(checkBraket(a1.get(i)));
    }
    if(aNew.size()%2==0) {
    for(int i=0;i<=aNew.size()/2;i++) {
    //aNew.forEach(System.out::print);
    aNew = removeChecked(aNew,l);
    if(aNew.size()==0) {
    a1.forEach(System.out::print);
    System.out.println("正确");
    break;
    }
    if((int)aNew.get(0)==0) {
    a1.forEach(System.out::print);
    System.out.println("错误");
    break;
    }

    }
    }else {
    a1.forEach(System.out::print);
    System.out.println("错误");
    }
    }static int checkBraket(String a) {
    int index = 0;
    if("(".equals(a)) {
    index = 1;
    }
    if(")".equals(a)) {
    index = -1;
    }
    if("[".equals(a)) {
    index = 2;
    }
    if("]".equals(a)) {
    index = -2;
    }
    if("{".equals(a)) {
    index = 3;
    }
    if("}".equals(a)) {
    index = -3;
    }
    return index;
    }

    static List removeChecked(List a,List l) {
    List result = new ArrayList<>();
    for(int i=0;i<a.size();i++) {
    for(int n=0;n<l.size();n++) {
    if(a.get(i)==l.get(n)) {
    if((int)a.get(i-1)==-(int)l.get(n)) {
    a.remove(i-1);
    a.remove(i-1);
    if(a.size()==0) {
    return a;
    }
    }else {
    result.add(0);
    return result;
    }
    }
    }
    }
    return a;
    }