列表

详情


NC14646. 寻找zcmu

描述

一年一度的浙江中医药大学程序设计校赛正在火热进行,举办至今这是第十一届校赛了。
那么今年就来寻找一下zcmu。
这里有一串只包含小写字母的字符串,里面有若干个zcmu,你为了省力,需要知道最少需要删除几个字符是的有连续四个字符是"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);
	}
}

上一题