C++修改字母的次数

题目描述

计算需要在字符串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;
    }
}