题目内容:
实现扩展括号匹配算法,用来检查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 }
原文:https://www.cnblogs.com/victorique-de-blois/p/11667147.html