C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

どちらも並べ替えられているため、別の順序で配置できるようになりました。

さて、問題を理解したので。そのためのソリューションを作成しましょう。 1つの方法は、大文字と小文字の両方の配列をソートされた順序で作成し、最後の文字列でそれらを交互にすることです。このロジックに基づいてアルゴリズムを作成しました。

アルゴリズム

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 ++コードを使用して、3つの対角配列の上の行を下の行に交換するように設計されています。さらに、3対角配列が入力である場合、切望される結果は次のようなものでなければなりません。 このために、アクションのコースは次のようにアルゴリズムで簡単に説明されます; アルゴリズム Step-1: Input a diagonal array Step-2: Pass it to Swap() method Step-3: Traverse the outer loop till 3 Step-4: increment j= i+ 1 in the inner loop t

  2. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string