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

वैकल्पिक निचला ऊपरी स्ट्रिंग सी ++ में क्रमबद्ध करें

एक स्ट्रिंग वर्णों की एक सरणी है . और यह समस्या स्ट्रिंग के तत्वों को वैकल्पिक ऊपरी और निचले मामले के साथ क्रमबद्ध करना है।

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

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

Input : aFegrAfStRzsV
Output : AaFeRfSgVrstz
Explanation :
Upper case characters : A F R S V
Lower case characters : a e f g r s t z

दोनों एक क्रमबद्ध तरीके से हैं इसलिए अब हम उन्हें वैकल्पिक क्रम में रख सकते हैं।

अब, जब से हम समस्या को समझ गए हैं। आइए इसका समाधान तैयार करें। एक तरह से अपरकेस और लोअरकेस अक्षरों दोनों के लिए क्रमबद्ध क्रम में सरणियाँ बनाना और फिर उन्हें अंतिम स्ट्रिंग में बदलना है। हमने इस तर्क के आधार पर एक एल्गोरिथम बनाया है।

एल्गोरिदम

Step 1 : In an array lowercount[] add all lowercase characters in sorted order.
Step 2 : In an array uppercount[] add all uppercase characters in sorted order.
Step 3 : Create the final string using alternate values from both arrays.
Step 4 : Print the result array.

उदाहरण

#include <iostream>
using namespace std;
#define MAX 26
void alternateULSort(string& s) ;
int main(){
   string str = "aFegrAfStRzsV";
   cout<<"The unsorted string is : "<<str;
   cout<<"\nThe alternate lower upper sorted string is ";
   alternateULSort(str);
   cout << str << "\n";
}
void alternateULSort(string& s){
   int n = s.length();
   int lowerCount[MAX] = { 0 }, upperCount[MAX] = { 0 };
   for (int i = 0; i < n; i++) {
      if (isupper(s[i]))
         upperCount[s[i] - 'A']++;
      else
         lowerCount[s[i] - 'a']++;
   }
   int i = 0, j = 0, k = 0;
   while (k < n) {
      while (i < MAX && upperCount[i] == 0)
         i++;
      if (i < MAX) {
         s[k++] = 'A' + i;
         upperCount[i]--;
         }
      while (j < MAX && lowerCount[j] == 0)
         j++;
      if (j < MAX) {
         s[k++] = 'a' + j;
         lowerCount[j]--;
      }
   }
}

आउटपुट

The unsorted string is : aFegrAfStRzsV
The alternate lower upper sorted string is AaFeRfSgVrstz
है
  1. ऊपरी विकर्ण को C++ में लोअर के साथ स्वैप करें

    यह ट्यूटोरियल c++ कोड का उपयोग करके तीन-विकर्ण सरणी की ऊपरी पंक्ति को इसके निचले हिस्से में स्वैप करने के लिए डिज़ाइन किया गया है। इसके अलावा, यदि एक तीन-विकर्ण सरणी एक इनपुट है, तो वांछित परिणाम कुछ इस तरह होना चाहिए; इसके लिए एल्गोरिथम में कार्रवाई की प्रक्रिया इस प्रकार बताई गई है; एल्गोरिदम S

  1. C++ स्ट्रिंग को अपर केस में बदलें

    यहाँ एक स्ट्रिंग को C++ भाषा में अपरकेस में बदलने का प्रोग्राम है, उदाहरण #include<iostream> #include<string.h> using namespace std; int main() {    char s[30] = "This_is_string";    int i;    for(i=0;i<=strlen(s);i++) {       i

  1. सी ++ में एक स्ट्रिंग को टोकननाइज़ करें?

    पहला तरीका है, रिक्त स्थान से अलग किए गए शब्दों को पढ़ने के लिए एक स्ट्रिंगस्ट्रीम का उपयोग करना। यह थोड़ा सीमित है लेकिन यदि आप उचित जांच प्रदान करते हैं तो यह कार्य काफी अच्छी तरह से करता है। उदाहरण #include <vector> #include <string> #include <sstream> using namespace std; in