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

C++で文字列の長さに基づいて文字列の配列をソートする方法


この記事では、文字列のリストをその長さに基づいてソートする方法について解説します。文字数が少ない文字列ほど先頭に配置され、それより長い文字列が後ろに並びます。例として、次のような文字列の配列があるとします。

str_list = {"Hello", "ABC", "Programming", "Length", "Population"}

これをソートすると、以下のようになります。

str_list = {"ABC", "Hello", "Length", "Population", "Programming"}

ここでは、独自の比較ロジックを作成してソートを行います。この比較関数は、C++ STL の std::sort 関数に渡すことで利用できます。std::sort はデフォルトでは辞書順に要素を並べ替えますが、第3引数にカスタムの比較関数を指定することで、任意の基準(ここでは文字列の長さ)によるソートが可能になります。

アルゴリズム

compare(str1, str2):
開始
    もし str1 の長さ < str2 の長さ ならば
        return 1
    return 0
終了

サンプルコード

#include<iostream>
#include<algorithm>
using namespace std;
int compare(string str1, string str2){
    if(str1.length() < str2.length())
    return 1;
    return 0;
}
main(){
    string str_list[] = {"Hello", "ABC", "Programming", "Length", "Population"};
    int n = 5;
    sort(str_list, str_list + n, compare);
    for(int i = 0; i<n; i++){
        cout << str_list[i] << " ";
    }
}

出力結果

ABC Hello Length Population Programming

  1. C++で大文字と小文字を区別せずに文字列を比較する方法

    C++の標準ライブラリには、文字列を扱うためのstringクラスが用意されています。この記事では、2つの文字列が同一であるかどうかを大文字と小文字を区別せずに判定する方法を解説します。ロジックは非常にシンプルです。まず、比較対象となる両方の文字列をすべて小文字(または大文字)に変換します。その後、変換済みの文字列同士を比較し、結果を返すだけです。文字列を小文字に変換する際には、<algorithm>ヘッダで提供されているstd::transform関数を使用します。これにより、文字列内の各文字に対して::tolowerを適用できます。入力と出力の例入力: 2つの文字列 Hello

  2. C++で文字列同士の乗算を実装する方法

    文字列として与えられた2つの数値があるとします。この2つを掛け合わせ、その結果も文字列として返すことを考えます。例えば、「26」と「12」が入力された場合、出力は「312」になります。 数値をそのまま int や long long に変換して掛けることも可能ですが、非常に大きな数を扱う場合はオーバーフローが発生する恐れがあります。そこで、文字列のまま筆算をシミュレートする方法が有効です。 解決の手順 2つの数値文字列 num1 と num2 を引数として受け取ります。 m桁 × n桁の積は最大でも m+n 桁に収まるため、長さが「num1の桁数 + num2の桁数」である文字列 ans