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

सी++ में स्ट्रिंग में बोल्ड टैग जोड़ें

मान लीजिए कि हमारे पास एक स्ट्रिंग s और स्ट्रिंग्स की एक सूची है जिसे dict कहा जाता है, हमें उस dict में मौजूद सबस्ट्रिंग को s में लपेटने के लिए बोल्ड टैग और की एक बंद जोड़ी जोड़नी होगी। जब दो ऐसे सबस्ट्रिंग ओवरलैप होते हैं, तो हमें उन्हें केवल एक जोड़ी बंद बोल्ड टैग से लपेटना होगा। साथ ही, यदि बोल्ड टैग द्वारा लिपटे दो सबस्ट्रिंग लगातार हैं, तो हमें उन्हें संयोजित करने की आवश्यकता है।

इसलिए, यदि इनपुट s ="abcxyz123" जैसा है, तो dict ["abc",,"123"] है, तो आउटपुट "abcxyz123"

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=s का आकार

  • n आकार के बोल्ड ऐरे को परिभाषित करें

  • रिट:=खाली स्ट्रिंग

  • प्रारंभ करने के लिए मैं:=0, अंत:=0, जब मैं

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • यदि इंडेक्स से s का सबस्ट्रिंग (i से dict[j] - 1 के आकार में) dict[j] के समान है, तो -

        • अंत:=अधिकतम अंत और i + dict का आकार [j]

    • बोल्ड [i] :=अंत> i

  • इनिशियलाइज़ करने के लिए i:=0, जब i . करें

    • अगर बोल्ड [i] शून्य है, तो -

      • रिट:=रिट + एस[i]

      • जे:=मैं + 1

      • निम्नलिखित भाग पर ध्यान न दें, अगले पुनरावृत्ति पर जाएं

    • जे:=मैं

    • जबकि (j <आकार का s और बोल्ड [j] गैर-शून्य है), करें -

      • (जम्मू को 1 से बढ़ाएं)

    • रिट:=इंडेक्स i से j - i - 1 तक रिट का सबस्ट्रिंग "" कॉन्टेनेट s

  • वापसी रिट

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string addBoldTag(string s, vector<string>& dict) {
      int n = s.size();
      vector<int> bold(n);
      string ret = "";
      for (int i = 0, end = 0; i < s.size(); i++) {
         for (int j = 0; j < dict.size(); j++) {
            if (s.substr(i, dict[j].size()) == dict[j]) {
               end = max(end, i + (int)dict[j].size());
            }
         }
         bold[i] = end > i;
      }
      int j;
      for (int i = 0; i < s.size(); i = j) {
         if (!bold[i]) {
            ret += s[i];
            j = i + 1;
            continue;
         }
         j = i;
         while (j < s.size() && bold[j])
         j++;
         ret += "<b>" + s.substr(i, j - i) + "</b>";
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<string> v = {"abc","123"};
   cout << (ob.addBoldTag("abcxyz123", v));
}

इनपुट

"abcxyz123", ["abc","123"]

आउटपुट

<b>abc</b>xyz<b>123</b>

  1. सी ++ में स्ट्रिंग को संपीड़ित करें

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें दिए गए स्ट्रिंग से लगातार डुप्लिकेट वर्णों को समाप्त करना होगा और इसे वापस करना होगा। इसलिए, यदि किसी सूची में लगातार दोहराए गए वर्ण हैं, तो उन्हें वर्ण की एक प्रति के साथ प्रतिस्थापित किया जाना चाहिए। तत्वों का क्रम पहले जैसा ही रहेगा। इसलिए, यदि इनपुट

  1. सी++ में न्यूनतम स्ट्रिंग

    मान लीजिए कि हमारे पास समान लंबाई के दो तार s और t हैं, और दोनों छोटे अक्षरों में हैं। विचार करें कि हमने पहले s को किसी भी क्रम में पुनर्व्यवस्थित किया है, फिर s को t में बदलने के लिए आवश्यक न्यूनतम परिवर्तनों की गणना करें। इसलिए, यदि इनपुट s =eccynue, t =science जैसा है, तो आउटपुट 2 होगा जैसे कि ह

  1. C++ में दो बाइनरी स्ट्रिंग्स जोड़ने का प्रोग्राम

    बाइनरी नंबर के साथ दो स्ट्रिंग्स को देखते हुए, हमें उन दो बाइनरी स्ट्रिंग्स को जोड़कर प्राप्त परिणाम को खोजना होगा और परिणाम को बाइनरी स्ट्रिंग के रूप में वापस करना होगा। बाइनरी नंबर वे नंबर होते हैं जिन्हें या तो 0 या 1 के रूप में व्यक्त किया जाता है। 2 बाइनरी नंबर जोड़ते समय बाइनरी जोड़ नियम होता