LeetCode 20.有效的括号 C语言

目录

1 - 思路

2 - 解题方法

3 - 时间复杂度

4 - Code

5 - 总结


1 - 思路

判断有效括号使用【栈】这一数据结构解决。利用栈的先进后出从左到右遍历括号。

2 - 解题方法

①情况一

当字符串的长度是奇数时,此时不需进行其他判断,即可得出该序列不是有效括号。

②情况二

从左到右遍历括号

        i 当遇到左括号时,入栈。

        i 当遇到右括号时,让其与栈顶的左括号匹配(同类型括号可闭合),

               ii 若匹配则出栈,继续遍历括号;

               ii 若不匹配,则返回false,该字符串序列不是有效括号序列。

        i 遍历直到栈为空,即所有的左括号都找到了对应的右括号,该字符串序列为有效括号序列。

3 - 复杂度

①时间复杂度:O(n)

②空间复杂度:O(n)

4 - Code

char paris(char ch)
{
    if(ch==']')return '[';
    if(ch=='}')return '{';
    if(ch==')')return '(';
    else
    return false;
}

bool isValid(char * s)
{
    int n = strlen(s);
    if(n%2!=0)
    return false;
    char ch;
    int i,top=0;;
    char str[n+1];
    for(i=0;i

5 - 总结

题目简单,不过题解的细节还是值得学习。

一是s长度为奇数时可以直接排除。

二是可以用哈希表实现快速配对(而不是写一堆switch和if else)。

你可能感兴趣的:(LeetCode.,leetcode,数据结构,算法)