2023-08-03力扣每日一题
链接:
722. 删除注释
题意:
如题,特殊规则见链接
解:
字符串处理,嗯写就完事了,主要是判断指针位置和特殊规则
实际代码:
#include<bits/stdc++.h>
using namespace std;
vector<string> removeComments(vector<string>& source)
{vector<string>ans;int zt=0;//zt状态标识符 1进入块注释string temp;for(auto s:source){int lg=s.size();//cout<<"s:"<<s<<"zt:"<<zt<<endl;for(int i=0;i<lg;i++){if(s[i]=='/'&&zt==0){if(s[i+1]=='/') break;//行注释,退出else if(s[i+1]=='*')//块注释{zt=1;++i;++i;}}if(zt==0) temp.push_back(s[i]); if(zt==1&&i+1<lg&&s[i]=='*'&&s[i+1]=='/')//块注释结尾{zt=0;i++;}}if(zt==0&&!temp.empty())//不在块注释且非空{ans.push_back(temp);temp.clear();}//cout<<"templine:"<<temp<<endl;}return ans;
}
int main()
{vector<string>source;string temp;while(getline(cin,temp)){source.push_back(temp);}vector<string>ans=removeComments(source);for(auto a:ans) cout<<"line:"<<a<<endl;return 0;
}
限制:
1 <= source.length <= 100
0 <= source[i].length <= 80
source[i] 由可打印的 ASCII 字符组成。
每个块注释都会被闭合。
给定的源码中不会有单引号、双引号或其他控制字符。