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

C++の別の文字列で定義されているアルファベット順に文字列の配列を並べ替えます


文字列の配列があり、参照用に別の文字列があるとします。参照文字列を取得する必要があり、参照文字列内の文字の順序を使用して、文字列配列を並べ替えます。ここでは、配列内の文字列を検討しており、参照文字列は小文字です。

文字列配列が次のようになっているとします:["hello"、 "programming"、 "science"、 "computer"、 "india"]、参照文字列は次のようになります: "pigvxbskyhqzelutoacfjrndmw"、出力文字列を並べ替えると["programming 」、「インド」、「科学」、「こんにちは」、「コンピューター」]

タスクは簡単です。参照文字列をトラバースしてから、文字をキーとしてマップに格納し、インデックスを値として格納する必要があります。文字列を並べ替えるには、ASCII文字の順序ではなく、そのマップに基づいて文字列を比較する必要があります。マップ内の特定の文字にマップされた値を比較します。文字c1がc2の前にある場合は、c1

#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++配列

    このセクションでは、C++で文字列の配列を定義する方法を説明します。私たちが知っているように、Cには文字列がありませんでした。文字配列を使用して文字列を作成する必要があります。したがって、文字列の配列を作成するには、文字の2次元配列を作成する必要があります。各行は、その行列に異なる文字列を保持しています。 C ++には、stringというクラスがあります。このクラスオブジェクトを使用すると、文字列型データを格納し、それらを非常に効率的に使用できます。オブジェクトの配列を作成できるので、文字列の配列を簡単に作成できます。 その後、文字列型のベクトルオブジェクトを作成し、それらを配列として使用

  2. C++での文字列の配列

    文字列の配列は、stringキーワードを使用してC++で作成できます。ここでは、このアプローチを使用したC++プログラムについて説明しています。 アルゴリズム Begin Initialize the elements of array by string keyword. And take string as input. Print the array. End. サンプルコード #include<iostream> #include<bits/stdc++.h> using namespace std; int main() {   &nbs