第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

自己寫的一個(gè)單棧括號(hào)匹配,支持干擾字符

#include?<iostream>
#include?"Stack.h"

using?std::string;
using?std::cout;
using?std::endl;

/**
?*?檢測(cè)字符串中的括號(hào)是否匹配
?*?@param?str?待檢測(cè)匹配的字符串
?*?@param?tps1?匹配的符號(hào)
?*?@param?tps2?與tps1相匹配且順序一致的符號(hào)
?*?@return?括號(hào)是否匹配的布爾值
?*/
bool?isPaired(string?str,?string?tps1,?string?tps2);

int?main()?{
????string?s?=?"int?main(){func(){while(true){cout?<<?endl}}}";????//待檢測(cè)字符串
????string?msg;
????msg?=?isPaired(s,?"({[",?")}]")???"OK"?:?"No";
????cout?<<?msg?<<?endl;
????return?0;
}

bool?isPaired(string?str,?string?tps1,?string?tps2)?{
????Stack<char>?stack(str.length()?/?2);??//如果字符串中的括號(hào)匹配,最差情況下棧需要的長(zhǎng)度等于字符串長(zhǎng)度的一半
????int?tps_pos;
????char?tmp;
????for?(char?i?:?str)?{
????????if?(tps1.find(i)?!=?-1)?{???//棧存儲(chǔ)字符串中的左括號(hào)
????????????if?(stack.isFull())
????????????????return?false;
????????????stack.push(i);
????????}?else?if?((tps_pos?=?tps2.find(i))?!=?-1)?{
????????????if?(stack.isEmpty())
????????????????return?false;
????????????stack.pop(tmp);
????????????if?(tps1[tps_pos]?!=?tmp)?{????//判斷字符串的某一右括號(hào)字符對(duì)應(yīng)匹配的左括號(hào)是否與當(dāng)前pop出的元素是否一致
????????????????return?false;
????????????}
????????}
????}
????return?stack.isEmpty();?//判斷是否棧空,如果棧為空則說明匹配完畢,如果未空則說明有括號(hào)未匹配
}

好吧,這不是一個(gè)提問。只是一個(gè)代碼片段分享,評(píng)論區(qū)不支持語法高亮就發(fā)問答區(qū)了。

正在回答

2 回答

我也來分享一下,兄弟不會(huì)介意吧。和你寫的有點(diǎn)不同,也支持干擾字符!

MyStack<char>?*pStack?=?new?MyStack<char>(30);
?int?flag?=?0;
?char?elem;
?char?str[]?=?"[cfg(2sdf*2ds)f]";
?for?(int?i?=?0;i?<?strlen(str);i++)
?{
??switch?(str[i])
??{
??case?'(':
??case?'[':
???pStack->push(str[i]);
???break;
??case?')':??
???if?(!pStack->pop(elem))
???{
????flag?=?1;
????continue;
???}
???if?(elem?!=?'(')
???{
????flag?=?1;
???}
???break;
??case?']':
???if?(!pStack->pop(elem))
???{
????flag?=?1;
????continue;
???}
???if?(elem?!=?'[')
???{
????flag?=?1;
???}
???break;
??}
?}
?if?(!pStack->stackEmpty()?||?1?==?flag)
?{
??cout?<<?"字符串括號(hào)不匹配"?<<?endl;
?}
?else
?{
??cout?<<?"字符串括號(hào)匹配"?<<?endl;
?}


1 回復(fù) 有任何疑惑可以回復(fù)我~

#include?<iostream>

#include?"Stack.h"

?

using?std::string;

using?std::cout;

using?std::endl;

?

/**

?*?檢測(cè)字符串中的括號(hào)是否匹配

?*?@param?str?待檢測(cè)匹配的字符串

?*?@param?tps1?匹配的符號(hào)

?*?@param?tps2?與tps1相匹配且順序一致的符號(hào)

?*?@return?括號(hào)是否匹配的布爾值

?*/

bool?isPaired(string?str,?string?tps1,?string?tps2);

?

int?main()?{

????string?s?=?"int?main(){func(){while(true){cout?<<?endl}}}";????//待檢測(cè)字符串

????string?msg;

????msg?=?isPaired(s,?"({[",?")}]")???"OK"?:?"No";

????cout?<<?msg?<<?endl;

????return?0;

}

?

bool?isPaired(string?str,?string?tps1,?string?tps2)?{

????Stack<char>?stack(str.length()?/?2);??//如果字符串中的括號(hào)匹配,最差情況下棧需要的長(zhǎng)度等于字符串長(zhǎng)度的一半

????int?tps_pos;

????char?tmp;

????for?(char?i?:?str)?{

????????if?(tps1.find(i)?!=?-1)?{???//棧存儲(chǔ)字符串中的左括號(hào)

????????????if?(stack.isFull())

????????????????return?false;

????????????stack.push(i);

????????}?else?if?((tps_pos?=?tps2.find(i))?!=?-1)?{

????????????if?(stack.isEmpty())

????????????????return?false;

????????????stack.pop(tmp);

????????????if?(tps1[tps_pos]?!=?tmp)?{????//判斷字符串的某一右括號(hào)字符對(duì)應(yīng)匹配的左括號(hào)是否與當(dāng)前pop出的元素是否一致

????????????????return?false;

????????????}

????????}

????}

????return?stack.isEmpty();?//判斷是否???,如果棧為空則說明匹配完畢,如果未空則說明有括號(hào)未匹配

}


1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
數(shù)據(jù)結(jié)構(gòu)探險(xiǎn)—棧篇
  • 參與學(xué)習(xí)       62767    人
  • 解答問題       105    個(gè)

棧,先入后出(FILO),帶領(lǐng)大家體會(huì)棧這種數(shù)據(jù)結(jié)構(gòu)的美妙

進(jìn)入課程

自己寫的一個(gè)單棧括號(hào)匹配,支持干擾字符

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)