Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chuyển đổi chuỗi chỉ chứa ký tự riêng biệt trong C++


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