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

C++ में एनाग्राम की घटनाओं की गिनती


हमें एक टेक्स्ट स्ट्रीम और एक शब्द इनपुट के रूप में दिया गया है, और कार्य दिए गए टेक्स्ट स्ट्रीम में शब्द के एनाग्राम की घटनाओं की संख्या ढूंढना है। एनाग्राम एक शब्द से अक्षरों को पुनर्व्यवस्थित करके उत्पन्न होते हैं जो एक अलग शब्द या वाक्यांश बन जाता है जैसे "New York Times" में शब्दों के एनाग्राम "Monkeys write" के रूप में बन सकते हैं।

उदाहरण के लिए

इनपुट: String string-:  "workitwrokoffowkr" word = "work"   

आउटपुट: स्ट्रिंग में एनाग्राम की घटनाओं की संख्या: 3

व्याख्या: शब्द "work" के संभावित एनाग्राम work,wrok, rowk, owkr, आदि हैं। दी गई स्ट्रिंग में work के लिए उपलब्ध एनाग्राम work, wrok और owkr हैं इसलिए गिनती 3 है।

इनपुट: String string-:  "expresshycool" word = "Zen"   

आउटपुट: स्ट्रिंग में एनाग्राम की घटनाओं की संख्या: 0

व्याख्या: शब्द "zen" के संभावित एनाग्राम nez, ezn, enz, zne, nze, zen, आदि हैं। दी गई स्ट्रिंग में शब्द "zen" के लिए कोई उपलब्ध एनाग्राम नहीं है इसलिए गिनती 0 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • हमें एक वर्ण स्ट्रीम (stream) और शब्द (w) दिया गया है जिसे आगे की प्रोसेसिंग के लिए फ़ंक्शन countAna(stream,w) में पास किया जाता है।
  • फ़ंक्शन (countAna) के अंदर एक काउंट फ्लैग इनिशियलाइज़ किया जाता है
  • i=0 से i <= (stream.length()) - (w.length()) तक FOR लूप शुरू करें।
  • फ़ंक्शन (countAna) के अंदर फ़ंक्शन arrangeAna(w, stream.substring(i, i + (w.length()))) को कॉल करें जो शब्द और stream.substring(i, i + (w.length())) पास करता है जो स्ट्रीम से सबस्ट्रिंग उत्पन्न करता है (शब्द की लंबाई के बराबर लंबाई)।
  • फ़ंक्शन arrangeAna के अंदर स्ट्रिंग्स को वर्ण सरणी में परिवर्तित किया जाता है और सॉर्ट किया जाता है
  • (Arrays.equals(c1, c2)) फिर जांचता है कि उत्पन्न सबस्ट्रिंग शब्द के बराबर है या नहीं और प्रतिक्रिया (true/false) तदनुसार भेजी जाती है।
  • काउंट फ्लैग (अंदर countAna()) को तब बढ़ाया जाता है जब प्रतिक्रिया true होती है।
  • प्रतिक्रिया को फिर main() मेथड में कैप्चर किया जाता है और आउटपुट प्रिंट किया जाता है।

उदाहरण

import java.io.*; import java.util.*; public class testClass {    static boolean arrangeAna(String s1, String s2) {       char[] c1 = s1.toCharArray();       char[] c2 = s2.toCharArray();       Arrays.sort(c1);       Arrays.sort(c2);       if (Arrays.equals(c1, c2)) {          return true;       } else {          return false;       }    }    static int countAna(String stream, String w) {       int count = 0;       for (int i = 0; i <= (stream.length()) - (w.length()); i++) {          if (arrangeAna(w, stream.substring(i, i + (w.length())))) {             count++;          }       }       return count;    }    public static void main(String args[]) {       Scanner scan = new Scanner(System.in);       String stream = scan.next(); //workitwrokoffowkr       String w = scan.next(); //work       System.out.print(countAna(stream, w));    } }

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

आउटपुट

Count of occurrences of anagram in the string are: 3

  1. - C++ में Stringstream: स्ट्रिंग प्रोसेसिंग के लिए शक्तिशाली टूल

    C++ में stringstream एक ऐसा क्लास है जो स्ट्रिंग ऑब्जेक्ट को स्ट्रीम की तरह ट्रीट करने की सुविधा देता है। इसका उपयोग करके हम किसी स्ट्रिंग से ठीक उसी तरह डेटा पढ़ सकते हैं जैसे हम cin से पढ़ते हैं। यह <sstream> हेडर फाइल में परिभाषित होता है। Stringstream के मुख्य मेथड्स clear(): स्ट्रीम को

  1. - C# में स्ट्रिंग में शब्द की घटनाओं की गिनती

    स्ट्रिंग में किसी विशिष्ट शब्द/सबस्ट्रिंग की घटनाओं (occurrences) की गिनती के लिए IndexOf मेथड का उपयोग करके लूप में खोज की जाती है। उदाहरण using System; class Program { static void Main() { string str = Hello World! Hello!; Console.WriteLine(Occurrence: + Check.CheckOccurrenc

  1. - पायथन में स्ट्रिंग में वर्ण की घटनाएं गिनें

    हमें एक स्ट्रिंग और एक वर्ण दिया गया है। हम यह पता लगाना चाहते हैं कि दिया गया वर्ण दी गई स्ट्रिंग में कितनी बार दोहराया जाता है। range और len के साथ हम सूचकांक का उपयोग करके स्ट्रिंग में मौजूद प्रत्येक वर्ण से वर्ण का मिलान करने के लिए एक फॉर लूप डिज़ाइन करते हैं। range और len फ़ंक्शन हमें यह निर्