输入
输入的第一行包含一个整数n( 1<=n<=100000 )表示字符串的长度
第二行包含长度为n的仅由小写组成的字符串
输出
如果不可能则输出-1;否则,输出最小更改数。
任务是找到使给定字符串的所有子字符串都不同所需的最小更改数,或者确定这是不可能的。
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
int n,t=0;
cin >> n;
if (n > 26) { cout << -1; return 0; }
char a[1000010];
cin >> a;
int b[110] = { 0 };
for (int i = 0; i <= n - 1; i++)
{
b[a[i] - 'a']++;
}
for (int i = 0; i <= 25; i++)
{
if (b[i] > 1) t += b[i] - 1;
}
cout << t;
}
不会做题目时要耐心并转变思维,这样才能想出解题思路。