美文网首页
Leet Code OJ 20. Valid Parenthes

Leet Code OJ 20. Valid Parenthes

作者: 高思阳 | 来源:发表于2018-10-18 13:38 被阅读2次

    Given a string containing just the characters , determine if the input string is valid.
    The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
    翻译:
    给定一个字符串,只包含’(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 和’]’这些字符,检查它是否是“有效”的。
    括号必须以正确的顺序关闭,例如”()” 和”()[]{}”都是有效的,”(]” 和”([)]”是无效的。
    分析:
    本题考查的是栈结构,具有后进先出的特性。有效包含2个方面,第一个是如果是关闭的括号,前一位一定要刚好有一个开启的括号;第二个是最终结果,需要把所有开启的括号都抵消完。一个比较容易出错的地方是,遇到关闭括号时,要先判断栈是否已经空了。

    NSMutableArray *arr = [NSMutableArray arrayWithArray:@[@"[",@"(",@"[",@"(",@"<",@">",@")",@"]",@")",@"]"]];
    NSMutableArray *tmpArr = [NSMutableArray array];
    for (NSString *str in arr)
    {
    if ([str isEqualToString:@"["]||[str isEqualToString:@"("]||[str isEqualToString:@"<"]) {
    [tmpArr addObject:str];
    }
    else
    {
    if (tmpArr.count == 0) {
    NSLog(@"NO");
    return 0;
    }

                if ([str isEqualToString:@"]"]&&[tmpArr.lastObject isEqualToString:@"["]) {
                    [tmpArr removeLastObject];
                }
                else if([str isEqualToString:@")"]&&[tmpArr.lastObject isEqualToString:@"("])
                {
                    [tmpArr removeLastObject];
                }
                else if([str isEqualToString:@">"]&&[tmpArr.lastObject isEqualToString:@"<"])
                {
                    [tmpArr removeLastObject];
                }
                else
                {
                    NSLog(@"NO");
                    return 0;
                }
            }
        }
        if (tmpArr.count != 0) {
            NSLog(@"NO");
        }
        else
        {
            NSLog(@"YES");
        }

    相关文章

      网友评论

          本文标题:Leet Code OJ 20. Valid Parenthes

          本文链接:https://www.haomeiwen.com/subject/cknjzftx.html