ধরুন আমাদের একটি এনকোডেড স্ট্রিং আছে, যেখানে সাবস্ট্রিংগুলির পুনরাবৃত্তিগুলি সাবস্ট্রিং হিসাবে উপস্থাপিত হয় এবং সাবস্ট্রিংগুলির সংখ্যা অনুসরণ করে। তাই যদি স্ট্রিংটি ab2cd2 এর মত হয়, তাহলে এটি ababcdcd নির্দেশ করে এবং যদি k =4 হয়, তাহলে এটি kth অক্ষর প্রদান করবে, এটি এখানে b।
এটি সমাধান করার জন্য, আমরা প্রাথমিকভাবে খালি ডিক্রিপ্ট করা স্ট্রিং নিই তারপর সাবস্ট্রিং এবং এর ফ্রিকোয়েন্সি একের পর এক পড়ে স্ট্রিংটিকে ডিকম্প্রেস করি। তারপর ডিক্রিপ্ট করা স্ট্রিং এর ফ্রিকোয়েন্সি দ্বারা বর্তমান সাবস্ট্রিং যুক্ত করুন। স্ট্রিং শেষ না হওয়া পর্যন্ত আমরা এই প্রক্রিয়াটি পুনরাবৃত্তি করব এবং ডিক্রিপ্ট করা স্ট্রিং থেকে Kth অক্ষরটি প্রিন্ট করব।
উদাহরণ
#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