国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode刷題之有效的括號

這篇具有很好參考價值的文章主要介紹了Leetcode刷題之有效的括號。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

我們的內(nèi)心和心智,是決定我們未來命運的最強(qiáng)勁的力量。? ? ? ? ?-- 奧普拉·溫弗瑞
目錄

??一.有效的括號

??1.使用棧實現(xiàn)

??2.完整代碼:


題目描述:
給定一個只包括 '(',')','{','}','[',']'?的字符串 s ,判斷字符串是否有效。

有效字符串需滿足:

1.左括號必須用相同類型的右括號閉合。
2.左括號必須以正確的順序閉合。
3.每個右括號都有一個對應(yīng)的相同類型的左括號。

示例 1:

輸入:s = "()"
輸出:true

示例?2:

輸入:s = "()[]{}"
輸出:true

示例?3:???????

輸入:s = "(]"
輸出:false

做題鏈接:有效的括號

前言:
在5月13號晚上寫了一篇白嫖chatgpt的Edge插件,很難不愛啊的文章,只是隨便寫寫,只想把這個好用的插件分享給大家,但是出乎我的意料,居然上熱榜了,這也是我第一次上熱榜,瀏覽量居然高達(dá)9000,收藏也達(dá)到了驚人的400多。可給我高興壞了,非常感謝各位CSDN人的支持。未來我將更加努力,把自己學(xué)習(xí)的歷程的分享出來,和大家一起進(jìn)步。一起加油,再次感謝。

??一.有效的括號

這題的意思就是,給你一串字符串括號,讓你判斷這個字符串里面的括號是否匹配,如果匹配,就返回true,否則返回false。這題我們就可以使用棧來實現(xiàn)。
我們來回憶一下,之前學(xué)習(xí)的棧是怎么樣的。
棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除操作,進(jìn)行數(shù)據(jù)的插入和刪除操作的一端稱為棧頂。另一端稱為棧底。棧中數(shù)據(jù)元素遵循后進(jìn)先出LIFO(last in first out)。

??1.使用棧實現(xiàn)

思路:
1.
我們從頭開始遍歷字符串,當(dāng)遇到左括號也就是{,[,(的其中一個時,直接把這個左括號入棧。2.然后繼續(xù)遍歷字符串,只要遇到左括號就入棧,遇到右括號也就是},],)的其中一個時,直接把棧頂?shù)淖罄ㄌ柍鰲!?br>3.然后判斷這兩個字符是否括號匹配,如果不匹配,直接返回false,如果匹配,就繼續(xù)遍歷字符串,直到遍歷到字符串的尾,如果都匹配,那么就返回true。
老樣子我們還是畫圖來理解一下:
Leetcode刷題之有效的括號

Leetcode刷題之有效的括號

Leetcode刷題之有效的括號?

Leetcode刷題之有效的括號Leetcode刷題之有效的括號?

接著最后三個字符和明顯和棧內(nèi)的字符是匹配的,所以我們返回true。

思路是有了,那我們就可以直接寫代碼了。
注意細(xì)節(jié):容易犯的錯誤。
1.最后返回true時,棧必須為空,才能保證括號的匹配成功了的。
2.第一個字符如果是右括號,那么肯定就不匹配了,直接返回false。

??2.完整代碼:

typedef char STDataType;
typedef struct Stack
{
	STDataType* a;
	int top;		// 棧頂
	int Capacity;  // 容量 
}Stack;
// 初始化棧 
void StackInit(Stack* ps);
// 入棧 
void StackPush(Stack* ps, STDataType x);
// 出棧 
void StackPop(Stack* ps);
// 獲取棧頂元素 
STDataType StackTop(Stack* ps);
// 檢測棧是否為空,如果為空返回非零結(jié)果,如果不為空返回0 
int StackEmpty(Stack* ps);
// 銷毀棧 
void StackDestroy(Stack* ps);

// 初始化棧 
void StackInit(Stack * ps)
{
	assert(ps);
	ps->a = (STDataType*)malloc(sizeof(STDataType) * 4);//動態(tài)的開辟空間
	if (ps->a == NULL)
	{
		perror("malloc\n");
		return;
	}
	ps->top = 0;
	ps->Capacity = 4;
}

// 入棧 
void StackPush(Stack* ps, STDataType x)
{
	assert(ps);
	if (ps->top == ps->Capacity)
	{
		STDataType* temp = (STDataType*)realloc(ps->a, sizeof(STDataType) * ps->Capacity * 2);
		if (temp==NULL)
		{
			perror("realloc\n");
			return;
		}
			ps->Capacity *= 2;//每次增容尾上一次的二倍
			ps->a = temp;
	}
		ps->a[ps->top] = x;
		ps->top++;//棧內(nèi)入一個數(shù)據(jù),top就要往上面走一步
}

// 出棧 
void StackPop(Stack* ps)
{
	assert(ps);
	assert(ps->top>0);
	ps->top--;
}

// 獲取棧頂元素 
STDataType StackTop(Stack* ps)
{
	assert(ps);
	return ps->a[ps->top-1];
}

// 銷毀棧 
void StackDestroy(Stack* ps)
{
	assert(ps);
	free(ps->a);
	ps->a = NULL;
	ps->top = ps->Capacity = 0;
}


// 檢測棧是否為空,如果為空返回非零結(jié)果,如果不為空返回0 
int StackEmpty(Stack* ps) {
	assert(ps);
	return ps->top==0;
}
//上面調(diào)用實現(xiàn)棧的函數(shù)
bool isValid(char * s){
    Stack ps;
    StackInit(&ps);
    while(*s)//遍歷字符串
    {
        if(*s=='{'||*s=='('||*s=='[')//如果是左括號就直接入棧
        {
            StackPush(&ps,*s);
        }
        else
        {
            if(StackEmpty(&ps))
            {//當(dāng)?shù)谝粋€字符為右括號時,即沒有入棧,棧為空,直接返回false即可。
                StackDestroy(&ps);
                return false;
            }
            char top=StackTop(&ps);
            StackPop(&ps);
            if((*s=='}'&&top!='{')
            ||(*s==')'&&top!='(')
            ||(*s==']'&&top!='['))
            {
                StackDestroy(&ps);
                return false;//if語句只要有不匹配的,直接返回false
            }
        }
        ++s;
    }
    bool ret=StackEmpty(&ps);//棧為空,那么ret就為真,反之,為假。
    StackDestroy(&ps);
    return ret;
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-448303.html

?

?

到了這里,關(guān)于Leetcode刷題之有效的括號的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • LeetCode——有效的括號

    LeetCode——有效的括號

    這里,我提供一種用棧來解決的方法: 思路:棧的結(jié)構(gòu)是先進(jìn)后出,這樣我們就可以模擬棧結(jié)構(gòu)了,如果是‘(’、‘{’、‘[’任何一種,直接push進(jìn)棧就可以了,如果是‘}’、‘)’、‘]’任何一種就開始判斷,看棧pop的是否和對應(yīng)的字符匹配。 ? ?下面是源碼: ? ?

    2024年02月11日
    瀏覽(24)
  • [Leetcode] 0020. 有效的括號

    點擊上方,跳轉(zhuǎn)至leetcode 給定一個只包括 \\\'(\\\' , \\\')\\\' , \\\'{\\\' , \\\'}\\\' , \\\'[\\\' , \\\']\\\' ?的字符串 s ,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 每個右括號都有一個對應(yīng)的相同類型的左括號。 示例 1: 示例?2:

    2024年02月10日
    瀏覽(27)
  • Leetcode刷題之環(huán)形鏈表

    Leetcode刷題之環(huán)形鏈表

    莫等閑,白了少年頭,空悲切。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --岳飛 目錄 1.環(huán)形鏈表 2.環(huán)形鏈表Ⅱ 給你一個鏈表的頭節(jié)點 head ,判斷鏈表中是否有環(huán)。 如果鏈表中有某個節(jié)點,可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中

    2023年04月19日
    瀏覽(26)
  • leetcode刷題之回文鏈表

    leetcode刷題之回文鏈表

    目錄 做題思路 代碼實現(xiàn) 1.找到鏈表的中間節(jié)點 2.反轉(zhuǎn)中間節(jié)點之后的鏈表 3.判斷倒置的后半部分的鏈表是否等于前半部分的鏈表 整體代碼展示 總結(jié): 這里是題目鏈接。234. 回文鏈表 - 力扣(Leetcode) ?這道題目的意思是:判斷該鏈表中后半部分倒置是否跟前半部分相同,如

    2023年04月10日
    瀏覽(18)
  • 刷題之Leetcode209題(超級詳細(xì))

    力扣題目鏈接(opens new window) https://leetcode.cn/problems/minimum-size-subarray-sum/ 給定一個含有?n?個正整數(shù)的數(shù)組和一個正整數(shù)?s ,找出該數(shù)組中滿足其和 ≥ s 的長度最小的 連續(xù) 子數(shù)組,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0。 示例: 輸入:s = 7, nums = [2,3,1,2,4,3] 輸

    2024年04月11日
    瀏覽(17)
  • Leetcode刷題之反轉(zhuǎn)鏈表Ⅱ

    Leetcode刷題之反轉(zhuǎn)鏈表Ⅱ

    業(yè)精于勤而荒于嬉,行成于思而毀于隨。? ? ? ? ? ? ? ? ? ? ? ——韓愈 目錄 前言: ??一.反轉(zhuǎn)鏈表Ⅱ ??1.left和right中間鏈表反轉(zhuǎn),再把反轉(zhuǎn)鏈表和剩下的鏈接起來 ??2.left和right中間鏈表頭插? 題目描述: 給你單鏈表的頭指針 head 和兩個整數(shù)?left 和 right ,其中?left =

    2024年02月04日
    瀏覽(27)
  • leetcode刷題之背包問題(01背包)

    leetcode刷題之背包問題(01背包)

    01 背包 概念:有n件物品和一個最多能背重量為w 的背包。第i件物品的重量是 w e i g h t [ i ] weight[i] w e i g h t [ i ] ,得到的價值是 v a l u e [ i ] value[i] v a l u e [ i ] 。每件物品只能用一次,求解將哪些物品裝入背包里物品價值總和最大。 方法1:暴力回溯法 方法2:動態(tài)規(guī)劃 三個

    2024年02月02日
    瀏覽(153)
  • LeetCode刷題之分隔鏈表(圖解?代碼)

    LeetCode刷題之分隔鏈表(圖解?代碼)

    ? ? ? ? 首先直接進(jìn)入主題,題目鏈接??力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺 源代碼在最后,有更優(yōu)解的朋友歡迎在評論里指導(dǎo)我一番! 通過題目分析得出結(jié)論: ? ? ? ? 1. 將鏈表分為 k個子鏈表 ? ? ? ? 2. 用一個數(shù)組存放這k個子鏈表, 數(shù)組的長度就是k

    2024年02月06日
    瀏覽(21)
  • Leetcode 678. 有效的括號字符串

    有效的括號字符串 【問題描述】 給你一個只包含三種字符的字符串,支持的字符類型分別是 ‘(’、‘)’ 和 ‘*’。請你檢驗這個字符串是否為有效字符串,如果是有效字符串返回 true 。 有效字符串符合如下規(guī)則: 示例 1: 輸入:s = “()” 輸出:true 示例 2: 輸入:s = “

    2024年02月13日
    瀏覽(25)
  • LeetCode:20. 有效的括號——棧和隊列

    LeetCode:20. 有效的括號——棧和隊列

    ??道阻且長,行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :給定一個只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正

    2023年04月26日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包