91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[LeetCode]20. Valid Parentheses

發布時間:2020-04-04 11:48:58 來源:網絡 閱讀:511 作者:風子余 欄目:編程語言

20. Valid Parentheses

Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.


題意:

括號字符串的匹配。


棧的特性:

后進先出。


棧的頭文件:

struct stack

{

    char elem;

    struct stack *next;

};

棧的大小:

在64位系統上:sizeof(char) = 1,sizeof(struct stack *) = 8,sizeof(struct stack) = 16;

在32位系統上:sizeof(char) = 1,sizeof(struct stack *) = 4,sizeof(struct stack) = 8;

64位系統的地址是64位的,即8字節;32位系統的地址是32的,即4字節。所以sizeof(struct stack *)分別是8字節和4字節。雖然sizeof(char)都為一字節。由于結構體存在字節對齊,所以sizeof取出的結構體大小是結構體最大元素的整數倍。所以結構體大小是16字節和8字節。


push入棧,pop出棧,top獲取棧頂元素。getLen函數如果棧為空,則返回一;否則返回零。


思路:

如果元素是'(','{'或'['則直接入棧;如果是元素是')',則判斷棧頂,如果棧頂元素是'('則'('出棧。'}'和']'一樣處理。

struct stack
{
    char elem;
    struct stack *next;
};

struct stack
*push(struct stack *head, char c)
{
    struct stack *node = NULL;
    node = (struct stack *)malloc(sizeof(struct stack));
    if ( node == NULL )
    {
        return NULL;
    }
    
    node->elem = c;
    if ( head == NULL )
    {
        node->next = NULL;
        head = node;
    }
    else
    {
        node->next = head;
    }
    
    return node;
}

char
top(struct stack *head)
{
    if ( !head )
    {
        return 0;
    }
    return head->elem;
}

struct stack
*pop(struct stack *head)
{
    if ( !head )
    {
        return NULL;
    }
    char val = head->elem;
    struct stack *delete = head;
    head = head->next;
    free(delete);
    return head;
}

int
getLen(struct stack *head)
{
    return head == NULL ? 1 : 0;
}

bool isValid(char* s) 
{
    struct stack *head = NULL;
    while ( *s )
    {
        if ( *s == '(' || *s == '{' || *s == '[' )
        {
            head = push(head, *s);
        }
        
        if ( *s == ')' )
        {
            if ( top(head) == '(' )
            {
                head = pop(head);
            }
            else
            {
                head = push(head, *s);
            }
        }
        
        if ( *s == '}' )
        {
            if ( top(head) == '{' )
            {
                head = pop(head);
            }
            else
            {
                head = push(head, *s);
            }
        }
        
        if ( *s == ']' )
        {
            if ( top(head) == '[' )
            {
                head = pop(head);
            }
            else
            {
                head = push(head, *s);
            }
        }
        s++;
    }
    
    return getLen(head);
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁德市| 叙永县| 兰溪市| 旺苍县| 西宁市| 林口县| 乌鲁木齐县| 通辽市| 响水县| 虎林市| 三都| 通海县| 涞水县| 城步| 洪湖市| 阜新市| 天等县| 平山县| 南乐县| 丰宁| 通化县| 龙山县| 乐都县| 高平市| 济阳县| 金乡县| 油尖旺区| 珲春市| 沭阳县| 盐城市| 洪泽县| 清河县| 靖州| 格尔木市| 九龙城区| 米易县| 邻水| 福鼎市| 北川| 安阳市| 佛学|