尽量去匹配更长的模式串,然后滑动匹配点,如果发现匹配长为0则无法匹配下去。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define PI (M_PI)
#define INF (0x3f3f3f3f)
#define MOD (1000000007)
#define EPS (1e-12)
#define MAX (1000000)
#define LEN (MAX+5)
int main()
{
string s;
char p[] = "144";
cin >> s;
bool f = true;
for(int i = 0;s[i];){
int c = 0;
for(int j = i;s[j] && j < i + 3;++j){
if(s[j] != p[j - i])break;
else c++;
}
if(!c){
f = false;
break;
}
i += c;
}
if(f) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}