在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP