給定乙個字串,設計乙個演算法消除其中成對出現的括號,如果括號不成對,提示異常(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。你可以不斷反覆按照這個規則進行替換,...