<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)591:標(biāo)簽驗(yàn)證器

          共 1047字,需瀏覽 3分鐘

           ·

          2022-04-26 07:27

          算法的重要性,我就不多說(shuō)了吧,想去大廠(chǎng),就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問(wèn)題叫做?標(biāo)簽驗(yàn)證器,我們先來(lái)看題面:
          https://leetcode-cn.com/problems/tag-validator/


          示例? ? ? ? ? ? ? ? ? ? ? ? ?


          解題


          class?Solution?{
          public:
          ????bool?isValid(string?code)?{
          ????????stack<string> stk; // 用棧維護(hù) tag_name
          ????????for(int?i = 0;i < code.size();i ++ ){
          ????????????if(code[i] == '<'){
          ????????????????int?j = i + 1;
          ????????????????while(j < code.size() && code[j] != '>') j ++ ; // 找到與之對(duì)應(yīng)的 >
          ????????????????if(code[i + 1] == '/'){
          ????????????????????if(stk.empty()) return?false; // 沒(méi)有匹配的 左標(biāo)簽直接反回 false
          ????????????????????if(stk.top() != code.substr(i + 2, j - (i + 2))) return?false; // 有匹配的 但是兩個(gè)不一樣
          ????????????????????stk.pop(); // 記得刪除棧頂
          ????????????????}else?if(code.substr(i, 9) != "){ // 如果不是 CDATA 那么就一定是一個(gè)起始標(biāo)簽
          ????????????????????if(i && stk.empty()) return?false; // 如果有多個(gè) tag_name 并列 返回 false
          ????????????????????for(int?k = i + 1;k < j;k ++ ) if(code[k] < 'A'?|| code[k] > 'Z') return?false; // 字母不合法
          ????????????????????if(j - 1?- (i + 1) + 1?> 9?|| j - 1?- (i + 1) + 1?< 1) return?false; // 長(zhǎng)度不合法
          ????????????????????stk.push(code.substr(i + 1, j - (i + 1))); // 壓入棧中
          ????????????????}else{
          ????????????????????if(code.substr(i, 9) == "){
          ????????????????????????if(stk.empty()) return?false; // 如果是沒(méi)有被包含在標(biāo)簽里的直接返回 false
          ????????????????????????j = i;
          ????????????????????????while(j < code.size() && code.substr(j, 3) != "]]>") j ++ ;
          ????????????????????????if(j == code.size()) return?false;
          ????????????????????????j += 2; // 過(guò)濾掉 CDATA 里邊的所有字符
          ????????????????????}
          ????????????????}
          ????????????????i = j;
          ????????????}else{ // tag_content
          ????????????????if(stk.empty()) return?false; // 沒(méi)有被包含進(jìn)來(lái) 直接返回 false
          ????????????????int?j = i;
          ????????????????while(j < code.size() && code[j] != '<') j ++ ; // 過(guò)濾掉中間不包含 < 的所有字符
          ????????????????if(j == code.size()) return?false;
          ????????????????i = j - 1;
          ????????????}
          ????????}
          ????????if(stk.size()) return?false; // 如果棧還有東西 返回false
          ????????return?true; // 萬(wàn)事大吉 返回 true
          ????}
          };

          作者:Lemmon_kk
          鏈接:https://www.acwing.com/activity/content/code/content/625320/
          來(lái)源:AcWing
          著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

          好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

          上期推文:

          LeetCode1-580題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)581:最短無(wú)序連續(xù)子數(shù)組
          LeetCode刷題實(shí)戰(zhàn)582:殺掉進(jìn)程
          LeetCode刷題實(shí)戰(zhàn)583:兩個(gè)字符串的刪除操作
          LeetCode刷題實(shí)戰(zhàn)584:尋找用戶(hù)推薦人
          LeetCode刷題實(shí)戰(zhàn)585:2016年的投資
          LeetCode刷題實(shí)戰(zhàn)586:訂單最多的客戶(hù)
          LeetCode刷題實(shí)戰(zhàn)587:安裝柵欄
          LeetCode刷題實(shí)戰(zhàn)588:設(shè)計(jì)內(nèi)存文件系統(tǒng)
          LeetCode刷題實(shí)戰(zhàn)589:N 叉樹(shù)的前序遍歷
          LeetCode刷題實(shí)戰(zhàn)590:N 叉樹(shù)的后序遍歷

          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码国产视频 | 爱爱小视频网站 | 天天弄| 乱伦激情视频91 | 亚洲激情综合视频 |