資料結構與演算法 字串

2021-07-13 01:59:24 字數 736 閱讀 6030

生成n對括號的所有合法排列

** 描述:給定乙個非負整數n,生成n對括號的所有合法排列。

解答:該問題解的個數就是卡特蘭數,但是現在不是求個數,而是要將所有合法的括號排列列印出來。

該問題和《程式設計之美》的買票找零問題一樣,通過買票找零問題我們可以知道,針對乙個長度為2n的合法排列,第1到2n個位置都滿足如下規則:左括號的個數大於等於右括號的個數。所以,我們就可以按照這個規則去列印括號:假設在位置k我們還剩餘left個左括號和right個右括號,如果left>0,則我們可以直接列印左括號,而不違背規則。能否列印右括號,我們還必須驗證left和right的值是否滿足規則,如果left>=right,則我們不能列印右括號,因為列印會違背合法排列的規則,否則可以列印右括號。如果left和right均為零,則說明我們已經完成乙個合法排列,可以將其列印出來。通過深搜,我們可以很快地解決問題,針對n=2,問題的解空間如下:

按照這種思路,**如下:

[cpp]view plain

copy

print?

void generate(int leftnum,int rightnum,string s,vector&result)  

if(leftnum>0)  

if(rightnum>0&&leftnum  

資料結構與演算法 字串

判斷乙個串是不是回文串,往往要分開編寫,造成 的拖沓 int longestpalindrome const char s,int n return max void longestpalindrome test 上面的迴圈中,對於回文長度本身的奇偶性,我們進行區別處理。這樣有點拖沓。我們根據乙個簡...

資料結構與演算法 字串

題型1 如何統計字元中有多少個單詞?方法1 使用空格作為分隔。如果測出某乙個字元為非空格,而它前面的單詞是空格,則表示 新的單詞開始了 此時單詞數count累加1.如果當前字元為非空格而其前面的字元也是非空格,則意味著仍然是原來那個單詞的繼續,count不應再累加1.方法2 使用sstream中的i...

C C 資料結構與演算法 字串)

串 string 是有零個或多個字元組成的有限序列,有名叫字串。空格串和空串不一樣,空格串是有內容有長度的,而且可以不止乙個空格。線性表更關注的是單個元素的操作,比如查詢乙個元素,插入或刪除乙個元素,但串中更多的是查詢子串位置 得到指定位置子串 替換子串等操作。adt 串 string data 串...