乙個演算法題 括號匹配問題。

2022-08-03 10:39:16 字數 748 閱讀 6611

問:給予乙個字串為:']]]]]][[',請寫出程式求出其有多少對''?

一般這種問題都是想讓你通過資料結構去處理,仔細回想一下我們學過的資料結構,棧的先進後出是否能處理這個問題?

將字串遍歷,遇到左方括號 '[' 時將其壓入棧中,遇到右方括號 ']'時取出棧頂元素匹配,並將對數加1,這樣最後我們就求出來能有多少對方括號了。

棧的示意圖:

流程圖:

通過分析,我們使用php編碼實現這個功能:

//

括號匹配問題

$str = ']]]]]][[';

//初始化乙個棧

$stack = new

splstack();

$len = strlen($str

);$count = 0;

for ($i = 0; $i

< $len; $i++)

elseif ($str[$i] == ']')

}}unset($stack

);echo

$count;//

5

可以看出,通過棧去實現括號匹配檔案時非常清晰簡單的。

括號匹配(乙個已知括號組的完成)

用陣列儲存,目的是找到乙個個完整的括號組,即括號組裡面左括號,右括號相等。對每個括號組進行處理。首先遍歷一組,記錄有多少個左括號。給每個陣列元素乙個編號,是陣列下標加一。再遍歷陣列,每找到乙個右括號,就往前找乙個左括號。找到一對後,用乙個二維陣列記錄左右括號的位置。為了避免左括號重複被找,每找到一對...

乙個演算法題

題目描述 某省會城市街道縱橫交錯,為了監控路燈的執行狀況,每條街道使用乙個數字字串標識該街道上所有路燈的執行狀況。假設路燈只有如下 3種狀態 分別用數字 0,1,2標識,一盞路燈只對應其中一種狀態 0 標識路燈熄滅 1 標識路燈開啟 2 標識路燈故障 請根據輸入的字串,找出該街道上連續的處於相同狀態...

乙個演算法題

關鍵字 演算法 有101塊金幣,其中一塊是假的,要求用無砝碼的天平稱兩次,判斷是真的金幣重還是假的重 答案 分三份,第乙份份五十個,第二份五十個,第三份份乙個。第一次 將兩份五十個分別放到天平兩端。如果天平是平的,證明第三份是假的。這時只要從真的裡拿出乙個,和假的分別放到天平兩端,就能知道假的是輕是...