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

Chương trình tìm ký tự thứ k sau khi giải mã một chuỗi trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm ký tự thứ k sau khi giải mã một chuỗi.

Đối với điều này, chúng tôi sẽ được cung cấp một chuỗi bao gồm các ký tự và số và số nguyên K. Nhiệm vụ của chúng tôi là giải mã chuỗi đã cho và tìm ký tự ở vị trí thứ K.

Ví dụ

#include <cstdlib>
#include <iostream>
using namespace std;
//finding decrypted Kth character
char findKthChar(string s, int k) {
   int len = s.length();
   int i = 0;
   int total_len = 0;
   while (i < len) {
      if (isalpha(s[i])) {
         total_len++;
         if (total_len == k)
            return s[i];
         i++;
      }
      else {
         int n = 0;
         while (i < len && !isalpha(s[i])) {
            n = n * 10 + (s[i] - '0');
            i++;
         }
         int next_total_len = total_len * n;
         if (k <= next_total_len) {
            int pos = k % total_len;
            if (!pos) {
               pos = total_len;
            }
            return findKthChar(s, pos);
         }
         else {
            total_len = next_total_len;
         }
      }
   }
   return -1;
}
int main() {
   string s = "ab2c3";
   int k = 5;
   cout << findKthChar(s, k);
   return 0;
}

Đầu ra

c