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

C++で2つの文字列を逆の順序で連結するプログラムの書き方

この記事では、小文字のみで構成された2つの文字列 ST が与えられたとき、TS をこの順番で連結して最終的な文字列を生成するC++プログラムを解説します。

たとえば、入力が S = "ramming"、T = "prog" の場合、T を先に連結するため、出力は "programming" となります。

アルゴリズムの手順

この問題は、次のシンプルな手順で解くことができます。

res := T と S をこの順に連結する
res を返す

C++での実装例

それでは、実際のコードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;

string solve(string S, string T){
    string res = T + S;
    return res;
}
int main(){
    string S = "ramming";
    string T = "prog";
    cout << solve(S, T) << endl;
}

入力

"ramming", "prog"

出力

programming

コードの解説

solve 関数では、C++の + 演算子を使って文字列 T の後ろに S を連結し、新しい文字列 res を作成して返しています。std::string 型同士は + 演算子で直感的に連結できるため、この問題はわずか1行で解決できます。

なお、引数を const string& として参照渡しにすれば、大きな文字列を扱う際の不要なコピーを避けることができ、より効率的な実装になります。

  1. C++で文字配列に格納された文の単語順を反転する方法

    各要素が1文字として格納された文字配列(文)が入力として与えられたとき、その文を単語ごとに反転することを考えます。例えば、入力が [t,h,e, ,m,a,n, ,i,s, ,n,i,c,e] の場合、出力は [n,i,c,e, ,i,s, ,m,a,n, ,t,h,e] となります。つまり、各単語内の文字の並びはそのままに、単語の出現順だけが逆になります。この問題を解くために、以下の手順に従います。配列 s 全体を反転するj := 0 とするn := s のサイズとするi := 0 から i < n まで、i を1ずつ増やしながら以下を繰り返すs[i] が空白文字 と等しい場合、以

  2. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁