牛客1003从后台研发到跑路

张开发
2026/4/3 16:46:58 15 分钟阅读
牛客1003从后台研发到跑路
状态机类型(表示当前正在解析什么类型内容)//对于题目总共有三个状态,分别对应是在注释中在字符串里面解析普通文本 enum state { Comment, String, Normal }s;输入文本string str,temp; //getline 输入一行的字符串 不会附带换行符 ,需要自己添加 while(getline( std::cin,temp)) { strtemp; str\n; }解析过程主要过程int i0; sNormal;//初始状态是普通文本状态 //后面可能会涉及到i1情况会产生越界,但不用理会,string[i1]会是\0 while(istr.size()) { //解析过程... }普通文本解析//这里面涉及到状态转换 normal-string或者normal-comment或者没有转换 //情况有如下三种 /*1 遇到转义字符(/),这里和c语言里面转义字符不同c语言转义字符只会在字符和字符串出现这里会出现在字符串和普通代码文本里面*/ /*2 遇到注释(/*),要注意的是因为他可能后面没有匹配的* /,所以需要往后面遍历看看有没有* /,如果没有就是普通文本如果有就是注释*/ /*3 遇到字符串()直接状态转化为String,记得打印 */ if(sNormal) { if(str[i]\\) { if(str[i1]) { coutstr[i]str[i1]; i2; continue; } } if(str[i]/str[i1]*) { int temp_indexi2; //判断后面是否有匹配的*/ while(temp_indexstr.size()) { if(str[temp_index]*str[temp_index1]/) { sComment; break; } temp_index; } if(sComment) { i2; continue; } } else if(str[i]) { sString; } coutstr[i]; i1; }字符串解析//这里只需要注意转义字符情况 ,和之前一样注意就行 //遇到了 说明字符串结束了 要转为Normal状态了 else if(sString) { //反斜杠引号 if(str[i]\\) { if(str[i1]) { coutstr[i]str[i1]; i2; continue; } } else if(str[i]) { sNormal; } coutstr[i]; }注释解析//这里也比较简单只要往后看两个字符是不是* /就行了如果是转为Normal状态 else if(sComment) { if(str[i]*) { if(str[i1]/) { i2; sNormal; continue; } } i; }完整代码#includebits/stdc.h using namespace std; enum state { Comment, String, Normal }s; int main() { string str,temp; while(getline( std::cin,temp)) { strtemp; str\n; } int i0; sNormal; while(istr.size()) { if(sNormal) { //转义字符 if(str[i]\\) { if(str[i1]) { coutstr[i]str[i1]; i2; continue; } } if(str[i]/str[i1]*) { int temp_indexi2; //判断后面是否有匹配的*/ while(temp_indexstr.size()) { if(str[temp_index]*str[temp_index1]/) { sComment; break; } temp_index; } if(sComment) { i2; continue; } } //遇到 是字符串开头 else if(str[i]) { sString; } coutstr[i]; i1; } else if(sString) { //转义字符 if(str[i]\\) { if(str[i1]) { coutstr[i]str[i1]; i2; continue; } } //遇到 是字符串结束了 else if(str[i]) { sNormal; } coutstr[i]; } else if(sComment) { //遇到*/ 是注释结束了 if(str[i]*) { if(str[i1]/) { i2; sNormal; continue; } } i; } } return 0; }

更多文章