NC14646. 寻找zcmu
描述
输入描述
多组数据
每组数据包含一个字符串
1 <= n <= 100000
输出描述
输出一个整数表示最少需要删除的字符数,若不存在则输出"-1"。
示例1
输入:
zcmu umcz zzccmmuuaa
输出:
0 -1 2
C++11(clang++ 3.9) 解法, 执行用时: 17ms, 内存消耗: 10816K, 提交时间: 2017-12-19 19:28:13
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int A[maxn][26]; int tmp[26]; char s[maxn]; int main() { while (~scanf("%s",s+1)){ memset(tmp,0,sizeof(tmp)); int len=strlen(s+1); int ans=len+1; for (int i=len;i>0;i--){ memcpy(A[i],tmp,sizeof(tmp)); tmp[s[i]-'a']=i; int c=A[A[A[i]['c'-'a']]['m'-'a']]['u'-'a']; s[i]=='z'&&c?ans=min(ans,c-i-3):0; } printf("%d\n",ans<=len?ans:-1); } }