C言語で2つの文字列が同じかどうかを判定するプログラムの作成方法
2つの文字列 str1 と str2 が与えられたとき、その2つが同じ文字列であるかどうかを判定します。例えば「hello」と「hello」のように、まったく同一の文字列であれば「同じ」とみなされます。
「見た目が似ている文字列」と「完全に一致する文字列」の違い
「Hello」と「hello」のように、一見すると同じように見えても大文字と小文字が異なるため、実際には等しくない文字列があります。これに対して、「World」と「World」のように1文字たりとも違わず完全に一致する場合のみ、「同じ文字列」として扱われます。
例
入力: str1[] = {"Hello"}, str2[] = {"Hello"}
出力: Yes 2 strings are same(2つの文字列は同じです)
入力: str1[] = {"world"}, str2[] = {"World"}
出力: No, 2 strings are not same(2つの文字列は同じではありません)
アプローチ:strcmp()関数を使った比較
strcmp(string1, string2) を利用することで、2つの文字列を簡単に比較できます。
strcmp()(string compare)はヘッダーファイル「string.h」に含まれている標準ライブラリ関数で、引数として2つの文字列を受け取ります。この関数は2つの文字列を比較し、両者が完全に一致していれば 0 を返し、一致しない場合には 0 以外の値を返します。なお、strcmp() は大文字と小文字を区別するため、比較対象の2つの文字列は完全に同じでなければなりません。
- まず、2つの文字列を入力として受け取ります。
- strcmp() を呼び出し、比較したい2つの文字列を引数として渡します。
- 戻り値が 0 の場合は「Yes 2 strings are same」と表示します。
- 戻り値が 0 以外の場合は「No, 2 strings are not same」と表示します。
アルゴリズム
開始 関数 int main(int argc, char const *argv[]) の中で ステップ1→ 2つの文字列 string1[] と string2[] を宣言・初期化する ステップ2→ strcmp(string1, string2) == 0 である場合、 "Yes 2 strings are same\n" と表示する ステップ3→ それ以外の場合、 "No, 2 strings are not same\n" と表示する 終了
サンプルコード
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[]) {
char string1[] = {"tutorials point"};
char string2[] = {"tutorials point"};
// strcmp()関数を使って2つの文字列を比較する
if (strcmp(string1, string2) == 0)
printf("Yes 2 strings are same\n");
else
printf("No, 2 strings are not same\n");
return 0;
}
実行結果
上記のコードを実行すると、次のような出力が得られます。
Yes 2 strings are same
-
Pythonで2つの二分木の葉の並び(シーケンス)が同じかどうかを確認する方法
はじめに2つの二分木が与えられたとき、それぞれの木を左から右へたどったときの葉ノードの並び(シーケンス)が一致しているかどうかを判定する問題を考えてみましょう。例えば、次のような2つの木が入力として与えられた場合を想定します。この場合、どちらの木も葉の並びは [2, 6] となるため、出力は True になります。解決のアプローチこの問題を解くためには、以下の手順に従います。結果を格納するための新しいリスト c を用意します。inorder() 関数を定義します。この関数はルートノードとリスト c を引数に取ります。c が null の場合は、新しい空のリストを作成します。ルートノードが nu
-
【Python】2つの文字列を共通の位置で分割して回文を作れるか判定するプログラム
問題の概要同じ長さの2つの文字列 S と T が与えられたとき、両方の文字列を共通の位置で切断し、S の前半部分と T の後半部分をつなぎ合わせて回文(前から読んでも後ろから読んでも同じになる文字列)を作ることができるかどうかを判定します。例えば、入力が S = cat、T = dac の場合、出力は True になります。文字列を「c」+「at」と「d」+「ac」に分割すると、「c」+「ac」(つまり cac)が回文になるためです。アルゴリズムの手順この問題を解くためには、以下の手順に従います。n := 文字列 a の長さi := 0i < n かつ a[i] が b[n-i-1] と