Cho chuỗi, thay thế các ký tự trùng lặp bằng ký tự ngẫu nhiên chưa có trong chuỗi để chuỗi chỉ chứa ký tự riêng biệt.
Ví dụ: "tutorialspoint" -> "bucdrealspoint"
Chương trình minh họa
#include <bits/stdc++.h>
using namespace std;
int calculate_zero(int i, int occurrences[]){
while (i < 26) {
if (occurrences[i] == 0) return i;
i++;
}
return -1;
}
string print_modified(string str){
int n = str.length();
if (n > 26) return "-1";
string ch = str;
int occurrences[26] = {0};
for (int i = 0; i < n; i++) occurrences[ch[i] - 'a']++;
int index = calculate_zero(0, occurrences);
for (int i = 0; i < n; i++) {
if (occurrences[ch[i] - 'a'] > 1) {
occurrences[ch[i] - 'a']--;
ch[i] = (char)('a' + index);
occurrences[index] = 1;
index = calculate_zero(index + 1, occurrences);
}
}
cout << ch << endl;
return ch;
}
int main(){
string str = "tutorialspoint";
print_modified(str);
return 0;
}
Kết quả
bucdrealspoint