首页 > Web开发 > 详细

【OJ】html标记匹配

时间:2019-10-13 19:35:19      阅读:96      评论:0      收藏:0      [点我收藏+]

题目内容:

实现扩展括号匹配算法,用来检查HTML文档的标记是否匹配。

HTML标记应该成对、嵌套出现,

开标记是<tag>这种形式,闭标记是</tag>这种形式。

 

输入格式:

共1行,为一个字符串,即一个HTML文档中的内容。

 

输出格式:

共1行,为True或者False,表示该字符串中的标记是否匹配。

 

输入样例:

<html> <head> <title>Example</title> </head> <body> <h1>Hello, world</h1> </body> </html>

 

输出样例:

True

 1 #include <iostream>
 2 #include <stack>
 3 #include <string>
 4 using namespace std;
 5 int main(){
 6     stack<string> my_tag;
 7     int sign = 0, flag = 0;
 8     string my_html, tmp;
 9     getline(cin, my_html);
10     for (int i = 0, j = 0; i < my_html.length(); ++i, ++j){
11         if (my_html[i] == <){
12             sign = i + 1;
13             j = 0;
14             if (my_html[sign] == /)
15                 flag = 1;
16             else
17                 flag = 0;
18         }
19         if (my_html[i] == >){
20             if (flag == 0){
21                 tmp.assign(my_html, sign, j - 1);
22                 my_tag.push(tmp);
23             }
24             else{
25                 tmp.assign(my_html, sign + 1, j - 1);
26                 if (tmp.compare(my_tag.top())){
27                     my_tag.pop();
28                     continue;
29                 }
30                 else{
31                     cout << "False" << endl;
32                     return 0;
33                 }
34                     
35             }
36         }
37     }
38     if (my_tag.empty())
39         cout << "True" << endl;
40     else
41         cout << "False" << endl;
42     return 0;
43 }

 

【OJ】html标记匹配

原文:https://www.cnblogs.com/victorique-de-blois/p/11667147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!