字符串所有子串要不同。求修改最少多少个字符。
因为只能是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); } }
时间: 2024-12-10 07:12:20