字串括號消除

2021-10-06 04:03:56 字數 1245 閱讀 8222

給定乙個字串,設計乙個演算法消除其中成對出現的括號,如果括號不成對,提示異常(error),例如:(1,(2,3),(4,(5,6),7))轉化為1,2,3,4,5,6,7;

輸入: (1,(2,3),(4,(5,6),7

輸出: error

輸入: (1,2,(3,4))

輸出: 1,2,3,4

遍歷原始陣列,如果是左括號(「(」),設定括號標誌位加1,如果是右括號(「)」),設定括號標誌位減一,如果都不是,則把數字放入目的陣列。最後通過判斷括號標誌位是否為0判斷原始字串中的括號是否成對出現。

#include

using

namespace std;

bool

bracket

(char

* psrc,

char

*pdst)

int bracket_num =0;

while

(*psrc)

elseif(

(*psrc)

==')'

)else

}*pdst =

'\0'

;//在目的陣列末尾加上結束標誌

if(bracket_num!=0)

else

}int

main()

else

return0;

}

借助於棧實現功能,如果是左括號(「(」),就把左括號入棧,如果是右括號(「)」),就把左括號出棧,如果都不是,則把數字放入目的陣列。最後通過判斷棧是否為空判斷原始字串中的括號是否成對出現。

#include

using

namespace std;

bool

bracket

(string s)

vector<

char

> ans;

stack<

char

> stk;

int i =

0, len = s.

length()

;int bracket_num =0;

while

(i < len)

else

if(s[i]

==')'

)else}if

(!stk.

empty()

)else

cout

消除字串中成對的括號

給定乙個字串,設計乙個演算法消除其中成對出現的括號,如果括號不成對,提示異常 error 例如 1,2,3 4,5,6 7 轉化為1,2,3,4,5,6,7 例如 1,2,3 4,5,6 7 提示error。思路 遍歷原始陣列,如果是左括號 設定括號標誌位加1,如果是右括號 設定括號標誌位減一,如果...

字串消除

給定乙個字串,僅由a,b,c 3種小寫字母組成。當出現連續兩個不同的字母時,你可以用另外乙個字母替換它,如 有ab或ba連續出現,你把它們替換為字母c 有ac或ca連續出現時,你可以把它們替換為字母b 有bc或cb 連續出現時,你可以把它們替換為字母a。你可以不斷反覆按照這個規則進行替換,你的目標是...

字串消除

題目詳情 給定乙個字串,僅由a,b,c 3種小寫字母組成。當出現連續兩個不同的字母時,你可以用另外乙個字母替換它,如 有ab或ba連續出現,你把它們替換為字母c 有ac或ca連續出現時,你可以把它們替換為字母b 有bc或cb 連續出現時,你可以把它們替換為字母a。你可以不斷反覆按照這個規則進行替換,...