题解 P7313 【[COCI2018-2019#3] Magnus】
Griseo_nya
2021-02-05 08:58:23
因为我们删除任意个字母的目的是凑出 HONI ,所以我们只需要删去 H 和 O , O 和 N ,以及 N 和 I 之间的字母即可。
或者说,我们只需要遍历字符串,每次看本位字符是否与当前匹配到的字符相同即可。
下面是代码的说:
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
const string f="HONI";
int k=0,ans=0;
for(int i=0;i<s.size();i++){
if(s[i]==f[k]){ //如果当位匹配上了
if(++k==4)k=0,++ans; //我们可以把 k+1 内嵌在判断式里,如果 k==0 则从头再开始匹配, ans+1
}
}
cout<<ans; //输出答案
return 0;
}
```