Computer >> Máy Tính >  >> Lập trình >> C ++

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

Giả sử chúng ta có một chuỗi được mã hóa, trong đó số lần lặp lại của các chuỗi con được biểu diễn dưới dạng chuỗi con, theo sau là số chuỗi con. Vì vậy, nếu chuỗi giống như ab2cd2, nó chỉ ra ababcdcd và nếu k =4, thì nó sẽ trả về ký tự thứ k, ở đây là b.

Để giải quyết vấn đề này, ban đầu chúng tôi lấy chuỗi đã giải mã rỗng sau đó giải nén chuỗi bằng cách đọc từng chuỗi con và tần số của nó. Sau đó, nối chuỗi con hiện tại trong chuỗi được giải mã theo tần số của nó. Chúng tôi sẽ lặp lại quá trình này cho đến khi hết chuỗi và in ký tự thứ K từ chuỗi được giải mã.

Ví dụ

#include<iostream>
using namespace std;
char findKthCharacter(string str,int k) {
   string decrypted = "";
   string temp;
   int occurrence = 0;
   for (int i=0; str[i]!='\0'; ){
      temp = "";
      occurrence = 0;
      while (str[i]>='a' && str[i]<='z'){
         temp += str[i];
         i++;
      }
      while (str[i]>='1' && str[i]<='9') {
         occurrence = occurrence*10 + str[i] - '0';
         i++;
      }
      for (int j=1; j<=occurrence; j++)
      decrypted = decrypted + temp;
   }
   if (occurrence==0)
   decrypted = decrypted + temp;
   return decrypted[k-1];
}
int main() {
   string str = "ab4c12ed3";
   int k = 21;
   cout << k << "th character in decrypted string: " << findKthCharacter(str, k);
}

Đầu ra

21th character in decrypted string: e