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

C++ में दूसरी स्ट्रिंग द्वारा परिभाषित वर्णमाला क्रम के अनुसार स्ट्रिंग्स की सरणी को सॉर्ट करना


मान लीजिए हमारे पास स्ट्रिंग्स की एक सरणी है, और संदर्भ के लिए एक और स्ट्रिंग है। हमें संदर्भ स्ट्रिंग लेनी है और संदर्भ स्ट्रिंग में वर्णों के क्रम का उपयोग करके स्ट्रिंग सरणी को सॉर्ट करना है। यहां हम सरणी में स्ट्रिंग्स और संदर्भ स्ट्रिंग को लोअरकेस अक्षरों में मान रहे हैं।

मान लीजिए स्ट्रिंग सरणी ऐसी है: ["hello", "programming", "science", "computer", "india"], संदर्भ स्ट्रिंग ऐसी है: "pigvxbskyhqzelutoacfjrndmw", सॉर्टिंग के बाद आउटपुट स्ट्रिंग ऐसी होगी ["programming", "india", "science", "hello", "computer"]

कार्य सरल है। हमें संदर्भ स्ट्रिंग को ट्रैवर्स करना है, फिर वर्ण को मैप में कुंजी के रूप में और इंडेक्स को मान के रूप में संग्रहीत करना है। अब स्ट्रिंग को सॉर्ट करने के लिए, हमें उस मैप के आधार पर स्ट्रिंग्स की तुलना करनी होगी, न कि ASCII वर्ण क्रम के आधार पर। मैप में उन विशेष वर्णों को मैप किए गए मानों की तुलना करें, यदि वर्ण c1, c2 से पहले प्रकट होता है, तो c1 < c2।

उदाहरण

#include <iostream> #include <algorithm> #include <unordered_map> #include <vector> using namespace std; unordered_map<char, int> char_map; bool compare(string c1, string c2) {    for (int i = 0; i < min(c1.size(), c2.size()); i++) {       if (char_map[c1[i]] == char_map[c2[i]])          continue;       return char_map[c1[i]] < char_map[c2[i]];    }    return c1.size() < c2.size(); } int main() {    string str = "pigvxbskyhqzelutoacfjrndmw";    vector<string> v{ "hello", "programming", "science", "computer", "india" };    char_map.clear();    for (int i = 0; i < str.size(); i++)    char_map[str[i]] = i;    sort(v.begin(), v.end(), compare);    // Print the strings after sorting    for (auto x : v)    cout << x << " "; }

आउटपुट

programming india science hello computer

  1. - C++ में सेट बिट्स की संख्या के अनुसार ऐरे सॉर्ट करें

    यहां हम सेट-बिट्स के आधार पर ऐरे को सॉर्ट करने की एक दिलचस्प समस्या देखेंगे। जब ऐरे में किसी एलिमेंट में अधिक सेट-बिट्स होते हैं, तो उसे उस एलिमेंट से पहले रखा जाएगा जिसमें कम सेट बिट्स होते हैं। मान लीजिए कुछ नंबर्स हैं 12, 15, 7। तो सेट बिट्स मूल रूप से उनके बाइनरी प्रतिनिधित्व में 1s की संख्या है

  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में स्ट्रिंग्स का ऐरे

    C++ में स्ट्रिंग कीवर्ड का उपयोग करके स्ट्रिंग्स का ऐरे बनाया जा सकता है। यहां हम इस दृष्टिकोण का उपयोग करके एक C++ प्रोग्राम पर चर्चा कर रहे हैं। एल्गोरिदम Begin स्ट्रिंग कीवर्ड द्वारा ऐरे के तत्वों को इनिशियलाइज़ करें। और स्ट्रिंग को इनपुट के रूप में लें। ऐरे प्रिंट करें। End. उदाहरण को