Link:
C:
最好采取逆序贪心,否则要多考虑好几种情况
(从前往后贪心的话不能无脑选“dreamer”,"er"可能为"erase"/"eraser"的前缀)
#include <bits/stdc++.h> using namespace std; string s; int main() { cin>>s; for(int cur=s.size();cur;) if(cur>=5&&s.substr(cur-5,5)=="erase") cur-=5; else if(cur>=5&&s.substr(cur-5,5)=="dream") cur-=5; else if(cur>=6&&s.substr(cur-6,6)=="eraser") cur-=6; else if(cur>=7&&s.substr(cur-7,7)=="dreamer") cur-=7; else return puts("NO"),0; puts("YES"); return 0; }