C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で復号化された文字列のk番目の文字を検索します


エンコードされた文字列が1つあるとします。ここで、部分文字列の繰り返しは、部分文字列の後に部分文字列の数が続くものとして表されます。したがって、文字列がab2cd2のような場合は、ababcdcdを示し、k =4の場合は、k番目の文字(ここではb)を返します。

これを解決するために、最初に空の復号化された文字列を取得し、次にサブ文字列とその頻度を1つずつ読み取ることによって文字列を解凍します。次に、復号化された文字列に現在のサブ文字列をその頻度で追加します。文字列がなくなるまでこのプロセスを繰り返し、復号化された文字列から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

  1. 文字のASCII値を検索するC++プログラム

    ASCII(情報交換のためのアメリカ標準コード)テーブルには、0から127の範囲の値を持つ128文字があります。 異なる文字のASCII値のいくつかは次のとおりです- 文字 ASCII値 A 65 a 97 Z 90 z 122 $ 36 & 38 ? 63 文字のASCII値を見つけるプログラムは次のとおりです- 例 #include <iostream> using namespace std; void printASCII(char c) {    int i

  2. 復号化された文字列のk番目の文字を検索-Pythonで2を設定

    1つのエンコードされた文字列があり、部分文字列の繰り返しが部分文字列とそれに続く部分文字列の数として表されているとします。たとえば、文字列が「pq2rs2」でk =5の場合、出力は「r」になります。これは、復号化された文字列が「pqpqrsrs」であり、5番目の文字が「r」であるためです。暗号化された部分文字列の頻度は1桁を超える可能性があることに注意する必要があります。 したがって、入力がstring=pq4r2ts3およびk=11のような場合、文字列はpqpqpqpqrrtststs であるため、出力はiになります。 これを解決するには、次の手順に従います- エンコードされた:=