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

सी ++ में एक स्ट्रिंग के सभी अनुक्रमों को प्रिंट करें

इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग के सभी अनुक्रमों को प्रिंट करना होता है। उत्पन्न सबस्ट्रिंग स्ट्रिंग के तत्वों को हटाकर बनाया जाता है लेकिन क्रम वही रहता है (यानी ऑर्डर बदला नहीं जा सकता)।

आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं -

Input: xyz
Output: x,y,z,xy,yz,xz,xyz

स्पष्टीकरण -उपरोक्त उदाहरण में, हम देख सकते हैं कि सबस्ट्रिंग बनाने के लिए केवल वर्ण हटा दिए गए हैं। नहीं, पुनर्व्यवस्थित होता है।

इस समस्या को हल करने के लिए कई तरीके हो सकते हैं, यहां हम तरीकों को समझने के लिए उनमें से कुछ पर चर्चा करेंगे।

एक स्ट्रिंग के तत्वों का चयन करके और अनुक्रम बनाने के लिए कुछ को समाप्त करना है। इस पद्धति में, हम सबस्ट्रिंग बनाने के लिए कुछ तत्वों को चुनेंगे और बाकी को हटा देंगे।

उदाहरण

import java.util.*;
class Main{
   public static ArrayList<String>subStringSeq=new ArrayList<String>();
   public static void main(String[] args) {
      String s="pqrs";
      System.out.println("All the substring found are :");
      findSubString(s,"");
      System.out.println(subStringSeq);
   }
   public static void findSubString(String s, String ans) {
      if(s.length()==0){
         subStringSeq.add(ans);
         return;
      }
      findSubString(s.substring(1),ans+s.charAt(0)) ;
      findSubString(s.substring(1),ans);
   }
}

आउटपुट

पाए गए सभी विकल्प हैं -

[pqrs, pqr, pqs, pq, prs, pr, ps, p, qrs, qr, qs, q, rs, r, s, ]

दूसरी विधि स्ट्रिंग पर पुनरावृति हो सकती है और सबस्ट्रिंग उत्पन्न कर सकती है। और सबस्ट्रिंग उत्पन्न करने के लिए अनुक्रम के पात्रों को छोड़ना। यहां, हम सबस्ट्रिंग को स्टोर करने के लिए एक सूची का उपयोग करेंगे। और जांचें कि जो क्रम मिला है वह पहले से ही मिला है या नहीं।

उदाहरण

import java.util.HashSet;
public class Main{
   static HashSet<String> subString = new HashSet<>();
   static void findSubString(String str){
      for (int i = 0; i < str.length(); i++) {
         for (int j = str.length(); j > i; j--) {
            String sub_str = str.substring(i, j);
            if (!subString.contains(sub_str))
               subString.add(sub_str);
            for (int k = 1; k < sub_str.length() - 1; k++) {
               StringBuffer sb = new StringBuffer(sub_str);
               sb.deleteCharAt(k);
               if (!subString.contains(sb));
                  findSubString(sb.toString());
            }
         }
      }
   }
   public static void main(String[] args){
      String s = "pqrs";
      System.out.println("The subsequence is ");
      findSubString(s);
      System.out.println(subString);
   }
}

आउटपुट

इसके बाद है

[rs, pq, qr, pr, qs, ps, prs, p, pqr, q, r, s, pqs, qrs, pqrs]

एक और विधि वर्णों को ठीक कर सकती है और सबस्ट्रिंग ढूंढ सकती है। इस पद्धति में हम एक-एक करके स्ट्रिंग के तत्वों को ठीक करेंगे और इन निश्चित वर्णों का उपयोग करके, हम बाद की खोज करेंगे। इस विधि की पुनरावर्ती कॉलिंग आवश्यक स्ट्रिंग अनुवर्ती बनाता है।

उदाहरण

class Main {
   static void subString(String str, int n,
   int index, String curr){
      if (index == n){
         return;
      }
      System.out.print(curr + ", ");
      for (int i = index + 1; i < n; i++){
         curr += str.charAt(i);
         subString(str, n, i, curr);
         curr = curr.substring(0, curr.length() - 1);
      }
   }
   static void printSubStrings(String str){
      int index = -1;
      String curr = "";
      subString(str, str.length(), index, curr);
   }
   public static void main(String[] args){
      String str = "pqrs";
      System.out.println("The subStrings are :") ;
      printSubStrings(str);
   }
}

आउटपुट

सबस्ट्रिंग हैं -

p, pq, pqr, pqrs, pqs, pr, prs, ps, q, qr, qrs, qs, r, rs, s

  1. C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें n वर्णों की एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन मुद्रित करने होते हैं। स्ट्रिंग के वर्णों को दोहराने की अनुमति है। क्रमपरिवर्तन का मुद्रण वर्णानुक्रम में किया जाना चाहिए (शब्दकोशीय रूप से क्रमबद्ध क्रम)। आइए विषय को बेहतर ढंग से समझने के लिए एक

  1. C++ में एक स्ट्रिंग को ब्रैकेट रूप में तोड़ने के सभी तरीकों को प्रिंट करें

    इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें इसे सबस्ट्रिंग में तोड़ना होता है और उन्हें संलग्न कोष्ठक में प्रिंट करना होता है। आइए समस्या को बेहतर ढंग से समझने के लिए कुछ उदाहरण लें, Input : wxyz Output :    (w) (x) (y) (z)    (w) (x) (yz)    (w) (xy) (z)  

  1. किसी दिए गए स्ट्रिंग के सभी सबस्ट्रिंग को C++ में प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम किसी दिए गए स्ट्रिंग के सभी सबस्ट्रिंग को प्रिंट करने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक स्ट्रिंग या वर्णों की एक सरणी दी जाएगी। हमारा काम उस विशेष स्ट्रिंग के सभी सबस्ट्रिंग को प्रिंट करना है। उदाहरण #include<bits/stdc++.h> using namespace std; //prin