常見程式設計題 括號匹配方案

2021-08-27 11:11:42 字數 1363 閱讀 6152

一、合法的括號匹配序列被定義為:

1. 空串」「是合法的括號序列

2. 如果」x」和」y」是合法的序列,那麼」xy」也是乙個合法的括號序列

3. 如果」x」是乙個合法的序列,那麼」[x]」也是乙個合法的括號序列

4. 每個合法的括號序列都可以由上面的規則生成

例如」「, 「」, 「」, 「」, 「[[]]」都是合法的。

牛牛現在給出乙個括號序列s,牛牛允許你執行的操作是:在s的開始和結尾處新增一定數量的左括號(『[『)或者右括號(『]』)使其變為乙個合法的括號匹配序列。牛牛希望你能求出新增最少的括號之後的合法的括號匹配序列是什麼。

var s = readline();

var count = 0;

var t = '';

for(var i in s) else

if(count

< 0)

}while(count >= 1)

print(t + s);

二、合法的括號匹配序列被定義為:

1. 空串」「是合法的括號序列

2. 如果」x」和」y」是合法的序列,那麼」xy」也是乙個合法的括號序列

3. 如果」x」是乙個合法的序列,那麼」(x)」也是乙個合法的括號序列

4. 每個合法的括號序列都可以由上面的規則生成

例如」「, 「()」, 「()()()」, 「(()())」, 「(((())))」都是合法的。 東東現在有乙個合法的括號序列s,一次移除操作分為兩步:

1. 移除序列s中第乙個左括號

2. 移除序列s中任意乙個右括號.保證操作之後s還是乙個合法的括號序列

東東現在想知道使用上述的移除操作有多少種方案可以把序列s變為空

如果兩個方案中有一次移除操作移除的是不同的右括號就認為是不同的方案。

例如: s = 「()()()()()」,輸出1, 因為每次都只能選擇被移除的左括號所相鄰的右括號.

s = 「(((())))」,輸出24, 第一次有4種情況, 第二次有3種情況, … ,依次類推, 4 * 3 * 2 * 1 = 24

//法一

function

test

(str)

return count;

}console.log(test('(((())))'));

//法二

var s = readline();

var count = 0,

result = 1;

for(var i in s) else

if(s[i] === ')')

}print(result);

括號匹配題彙總

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 class solution return st.empty 任何左括號 必須對應兩個連續的右括號 左括號 必須在對應的連續兩個右括號 之前。可以在任意位置插入字元 和 使字串平衡。返回讓 s 平衡的最少插入次數。class solution...

移動端 常見適配方案

通過高度定死寬度百分比來適應不同的螢幕 1.經典的流式布局 左側固定,右側自適應 box right left 右側固定左側自適應 box right left 兩側固定,中間自適應 聖杯布局 參考以上兩個案例,發揮自己聰明的小腦殼實現它吧!2.缺點 對於大螢幕來說,使用者體驗並不是特別好,有些布局...

常見演算法題 判斷表示式括號是否匹配

題目 設計乙個演算法,判斷使用者輸入的表示式中括號是否匹配,表示式中可能含有圓括號 中括號和大括號。思路 建立乙個順序棧,當表示式中有左括號時將其入棧,當出現右括號時,將棧頂元素出棧,檢查與當前右括號是否匹配。最後如果棧為空則表示該表示式中的括號是匹配的。include include using ...