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

Tìm ký tự thứ k của chuỗi giải mã trong C++

Cho chuỗi mã hóa: chuỗi con theo sau là số lần lặp. Ví dụ: "ab2cd2" → "ababcdcd". Tìm ký tự thứ k (1-based) của chuỗi giải mã.

Giải mã: đọc chuỗi con và số lần lặp, nối chuỗi con lặp lại số lần đó vào chuỗi kết quả. Trả về ký tự tại vị trí k-1.

Ví dụ

#include <iostream>
using namespace std;

char findKthCharacter(string str, int k) {
    string decrypted = "";
    string temp;
    int occurrence = 0;
    for (int i = 0; i < str.length(); ) {
        temp = "";
        occurrence = 0;
        while (i < str.length() && str[i] >= 'a' && str[i] <= 'z') {
            temp += str[i];
            i++;
        }
        while (i < str.length() && str[i] >= '1' && str[i] <= '9') {
            occurrence = occurrence * 10 + str[i] - '0';
            i++;
        }
        for (int j = 1; j <= occurrence; j++)
            decrypted += temp;
    }
    if (occurrence == 0) decrypted += temp;
    return decrypted[k - 1];
}

int main() {
    string str = "ab4c12ed3";
    int k = 21;
    cout << k << "th character in decrypted string: " << findKthCharacter(str, k);
}

Kết quả

21th character in decrypted string: e