字符串所有子串要不同。求修改最少多少个字符。
因为只能是26个字母,显然大于26的不可能有答案,其它情况ans+=u[i]-1;u[i]是字母出现的次数。
#include<cstdio>
char s;
int n,u[30],ans;
int main(){
	scanf("%d ",&n);
	for(int i=0;i<n;i++){
		scanf("%c ",&s);
		u[s-‘a‘]++;
	}
	if(n>26)printf("-1");
	else{
		for(int i=0;i<26;i++)
			if(u[i])ans+=u[i]-1;
		 printf("%d",ans);
	}
}
【CodeForces 672B】Different is Good
原文:http://www.cnblogs.com/flipped/p/5723302.html