题目描述
计算需要在字符串s中更改的最小字符数,以便它至少包含k个不同字母,或输出不可能。字符串s包含小写字母,并且只能被更改为小写字母。
输入
第一行输入字符串s,只含小写字母,字符串长度不超过1000
第二行输入整数k,1<=k<=26
输出
输出必须更改的最小字符数,若情况不可能,输出“impossible”(无引号)。
样例输入
yandex
6
样例输出
0
提示
样例2输入
yahoo
5
样例2输出
1
样例3输入
google
7
样例3输出
impossible
#include <string>
#include <iostream>
using namespace std;
int main() {
string str;
int k;
cin >> str;
cin >> k;
int arr[26]{ 0 };
int size = str.size();
if (size < k)
cout << "impossible";
else {
for (int i = 0; i < size; i++)
{
arr[str[i] - 'a']++;
}
int tmp = 0;
for (int i = 0; i < 26; i++)
{
tmp += arr[i] == 0 ? 0 : 1;
}
if (tmp >= k)
tmp = 0;
else
tmp = k - tmp;
cout << tmp;
}
}