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