Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 해독된 문자열의 k' 문자 찾기

<시간/>

하나의 인코딩된 문자열이 있다고 가정합니다. 여기서 부분 문자열의 반복은 부분 문자열 다음에 부분 문자열의 개수로 표시됩니다. 따라서 문자열이 ab2cd2와 같으면 ababcdcd를 나타내고 k =4이면 k번째 문자, 즉 여기서 b를 반환합니다.

이를 해결하기 위해 우리는 처음에 빈 암호 해독된 문자열을 가져온 다음 부분 문자열과 해당 빈도를 하나씩 읽어 문자열의 압축을 풉니다. 그런 다음 해독된 문자열의 현재 부분 문자열을 빈도별로 추가합니다. 문자열이 소진될 때까지 이 과정을 반복하고 해독된 문자열에서 K번째 문자를 출력합니다.

#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);
}

출력

21th character in decrypted string: e