因为我们删除任意个字母的目的是凑出 HONI ,所以我们只需要删去 H 和 O , O 和 N ,以及 N 和 I 之间的字母即可。

或者说,我们只需要遍历字符串,每次看本位字符是否与当前匹配到的字符相同即可。

下面是代码的说:

#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;
}