我们定义每一行的第一、第二个非空字符分别为第 k1 个和第 k2 个,那么这一行如果符合下面几条要求,就算一级标题:
- 第 k1 个字符是
#
。 - 第 k2 个字符存在。
- 两个位置之间必有空格,也就是
k2-k1>1
写成代码就是这样:
#include<bits/stdc++.h>
using namespace std;
int n,ans=0;
string s;
int main()
{
cin>>n;
getline(cin,s);//读入数字后面的换行符,不然读不了最后一行
while(n--)
{
getline(cin,s);
int k1=-1,k2=-1;//k1记载第一个非空字符,k2记载第二个非空字符
for(int i=0;i<s.size();i++)
{
if(s[i]!=' ')
{
if(k1==-1) k1=i;
else if(k2==-1)
{
k2=i;
break;
}
}
}
if(s[k1]=='#'&&k2>=0&&k2-k1>1)//第一个字符是 # ,k2有改变(有第二个非空字符),k1 k2间至少有1个空格
ans++;
}
cout<<ans;
return 0;
}