問:給予乙個字串為:']]]]]][[',請寫出程式求出其有多少對''?
一般這種問題都是想讓你通過資料結構去處理,仔細回想一下我們學過的資料結構,棧的先進後出是否能處理這個問題?棧的示意圖:將字串遍歷,遇到左方括號 '[' 時將其壓入棧中,遇到右方括號 ']'時取出棧頂元素匹配,並將對數加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塊金幣,其中一塊是假的,要求用無砝碼的天平稱兩次,判斷是真的金幣重還是假的重 答案 分三份,第乙份份五十個,第二份五十個,第三份份乙個。第一次 將兩份五十個分別放到天平兩端。如果天平是平的,證明第三份是假的。這時只要從真的裡拿出乙個,和假的分別放到天平兩端,就能知道假的是輕是...