Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

डिक्रिप्टेड स्ट्रिंग के k-वें वर्ण का पता लगाएं - C++ में सेट – 2

अवधारणा

किसी दिए गए एन्कोडेड स्ट्रिंग के संबंध में जहां सबस्ट्रिंग के दोहराव को सबस्ट्रिंग के रूप में दर्शाया जाता है और उसके बाद सबस्ट्रिंग की गिनती होती है। इसलिए, उदाहरण के लिए, यदि एन्क्रिप्टेड स्ट्रिंग "pq2rs2" और k=5 है, तो आउटपुट 'r' होगा क्योंकि डिक्रिप्टेड स्ट्रिंग "pqpqrsrs" है और 5वां वर्ण 'r' है।

यह ध्यान दिया जाना चाहिए कि एन्क्रिप्टेड सबस्ट्रिंग की आवृत्ति एक से अधिक अंकों की हो सकती है। इसलिए, उदाहरण के लिए, "pq12r3" में, pq को 12 बार दोहराया जाता है। यहां, सबस्ट्रिंग की आवृत्ति में कोई अग्रणी 0 मौजूद नहीं है।

इनपुट

"p2q2r3", k = 6

आउटपुट

r

डिक्रिप्टेड स्ट्रिंग "ppqqrrr" है

इनपुट

"pq4r2ts3", k = 11

आउटपुट

t

डिक्रिप्टेड स्ट्रिंग "pqpqpqpqrrtststs" है

विधि

यहाँ, स्टेप वाइज एल्गोरिथम है -

  • वर्तमान सबस्ट्रिंग की लंबाई निर्धारित करें। दो पॉइंटर्स लागू करें। हमें सबस्ट्रिंग की शुरुआत में एक पॉइंटर को ठीक करना होगा और एक अंक न मिलने तक दूसरे पॉइंटर को आगे बढ़ाना होगा।
  • जब तक कोई अक्षर नहीं मिलता तब तक दूसरे पॉइंटर को आगे बढ़ाते हुए दोहराव की आवृत्ति निर्धारित करें।
  • सबस्ट्रिंग की लंबाई निर्धारित करें यदि इसे आवृत्ति और इसकी मूल लंबाई को गुणा करके दोहराया जाता है।
  • यह देखा गया है कि यदि यह लंबाई k से छोटी है, तो आवश्यक वर्ण इसके बाद के विकल्प में निहित है। कवर करने के लिए आवश्यक वर्णों की संख्या को बनाए रखने के लिए हमें इस लंबाई को k से घटाना होगा।

  • यह देखा गया है कि यदि लंबाई k से छोटी या उसके बराबर है, तो आवश्यक वर्ण वर्तमान प्रतिस्थापन में निहित है। क्योंकि k 1-अनुक्रमित है, इसे 1 से घटाएं और फिर इसके मॉड को मूल सबस्ट्रिंग लंबाई के साथ लें। यहां, आवश्यक वर्ण सबस्ट्रिंग की शुरुआत से kth वर्ण है जिसे पहले पॉइंटर द्वारा इंगित किया जाता है।

उदाहरण

// C++ program to find K'th character in
// decrypted string
#include <bits/stdc++.h>
using namespace std;
// Shows function to find K'th character in
// Encoded String
char encodedChar(string str, int k){
   int a, b;
   int m = str.length();
   // Used to store length of substring
   int len1;
   // Used to store length of substring when
   // it is repeated
   int num1;
   // Used to store frequency of substring
   int freq1;
   a = 0;
   while (a < m) {
      b = a;
      len1 = 0;
      freq1 = 0;
      // Determine length of substring by
      // traversing the string until
      // no digit is found.
      while (b < m && isalpha(str[b])) {
      b++;
      len1++;
   }
   // Determine frequency of preceding substring.
   while (b < m && isdigit(str[b])) {
      freq1 = freq1 * 10 + (str[b] - '0');
      b++;
   }
   // Determine length of substring when
   // it is repeated.
   num1 = freq1 * len1;
   // It has been seen that if length of repeated substring is
   less than // k then required character is present in next
   // substring. Subtract length of repeated
   // substring from k to keep account of number of
   // characters required to be visited.
   if (k > num1) {
      k -= num1;
      a = b;
   }
   // It has been seen that if length of repeated substring is
   // more or equal to k then required
   // character lies in current substring.
      else {
         k--;
         k %= len1;
         return str[a + k];
      }
   }
   // This is for the case when there
   // are no repetition in string.
   // e.g. str="abced".
   return str[k - 1];
}
// Driver Code
int main(){
   string str1 = "pqpqpqpqrrtststs";
   int k1 = 11;
   cout << encodedChar(str1, k1) << endl;
   string str2 = "p2q2r3";
   int k2 = 6;
   cout << encodedChar(str2, k2) << endl;
   return 0;
}

आउटपुट

t
r

  1. सी ++ प्रोग्राम एक स्ट्रिंग में एक चरित्र की आवृत्ति का पता लगाने के लिए

    एक स्ट्रिंग एक आयामी वर्ण सरणी है जिसे एक शून्य वर्ण द्वारा समाप्त किया जाता है। एक स्ट्रिंग में वर्णों की आवृत्ति एक स्ट्रिंग में होने की संख्या है। उदाहरण के लिए - String: Football is a sport The frequency of alphabet o in the above string is 3 किसी विशेष वर्ण की आवृत्ति ज्ञात करने का कार्यक्रम इ

  1. सी # में स्ट्रिंग का पहला अक्षर कैसे खोजें?

    पहला वर्ण प्राप्त करने के लिए, सबस्ट्रिंग () विधि का उपयोग करें। मान लें कि निम्नलिखित isour स्ट्रिंग - string str = "Welcome to the Planet!"; अब पहला कैरेक्टर पाने के लिए, सबस्ट्रिंग () मेथड में वैल्यू 1 सेट करें। string res = str.Substring(0, 1); आइए देखें पूरा कोड - उदाहरण using Syst

  1. डिक्रिप्टेड स्ट्रिंग के k-वें वर्ण का पता लगाएं - पायथन में सेट - 2

    मान लीजिए कि हमारे पास एक एन्कोडेड स्ट्रिंग है जहां सबस्ट्रिंग के दोहराव को सबस्ट्रिंग के रूप में दर्शाया जाता है और उसके बाद सबस्ट्रिंग की गिनती होती है। उदाहरण के तौर पर, यदि स्ट्रिंग pq2rs2 और k=5 है, तो आउटपुट r होगा, ऐसा इसलिए है क्योंकि डिक्रिप्टेड स्ट्रिंग pqpqrsrs है और 5वां वर्ण r है। हमें