[STLC++Set]diversity
Bài tập.
Tính số lượng tiểu thiểu các ký tự cần thay đổi trong chuỗi str
để chuỗi đó có k ký tự khác nhau hoặc xuất ra điều đó là không thể.
Chuỗi str
chỉ bao gồm những chữ cái latinh viết thường và cũng chỉ có thể thay thành những chữ cái latinh viết thường.
Ví dụ:
- Với
str = "yandex", k = 6
thì kết quả sẽ làdiversity(s, k) = "0"
- Với
str = "google", k = 7
thì kết quả sẽ làdiversity(s, k) = "impossible"
. - Với
str = "codelearn", k = 9
thì kết quả sẽ làdiversity(s, k) = "1"
Hướng dẫn.
So sánh str.length và k:
- Nếu
str.length() < k
:- Trả về
"impossible"
.
- Trả về
- Nếu
str.length() ≥ k
:- Tạo một set
s
chèn từ các ký từ trongstr
. - Nếu
s.size() ≥ k
:- Trả về
0
.
- Trả về
- Nếu
s.size() < k
:- Trả về
k - s.size()
.
- Trả về
- Tạo một set
Code mẫu:
string diversity(string str, int k){
set<char> s;
int i;
string ret;
if (str.size() < k) {
ret = "impossible";
} else {
for (i = 0; i < str.size(); i++) {
s.insert(str.at(i));
}
if (s.size() >= k) {
i = 0;
} else {
i = k - s.size();
}
ret = to_string(i);
}
return ret;
}
Post Comment