C#で2つのシーケンスが等しいかどうかを確認する方法(SequenceEqualメソッド)
SequenceEqualメソッドとは
C#のLINQに含まれるSequenceEqualメソッドは、2つのコレクション(シーケンス)が等しいかどうかを判定するために使用されます。
このメソッドは、両方のシーケンスの要素数が同じで、かつ同じ順序で同じ要素が並んでいる場合に True を返し、それ以外の場合は False を返します。
比較対象となるシーケンスの準備
まず、比較に使用する文字列配列を用意します。
string[] arr1 = { "This", "is", "it" };
string[] arr2 = { "My", "work", "report" };
string[] arr3 = { "This", "is", "it" };SequenceEqualメソッドで等しさをチェックする
SequenceEqualメソッドを使えば、次のように1行で2つのシーケンスを比較できます。
arr1.SequenceEqual(arr2);
サンプルプログラム
以下は、3つの配列をSequenceEqualメソッドで比較する完全なコード例です。
using System;
using System.Linq;
class Program {
static void Main() {
string[] arr1 = { "This", "is", "it" };
string[] arr2 = { "My", "work", "report" };
string[] arr3 = { "This", "is", "it" };
bool res1 = arr1.SequenceEqual(arr2);
Console.WriteLine(res1);
bool res2 = arr1.SequenceEqual(arr3);
Console.WriteLine(res2);
}
}
実行結果
False
True
解説
- arr1 と arr2 の比較: 要素の内容がまったく異なるため、結果は False になります。
- arr1 と arr3 の比較: 要素の数・内容・順序がすべて一致しているため、結果は True になります。
なお、SequenceEqualメソッドを使用するには System.Linq 名前空間が必要です。また、このメソッドは要素の並び順も比較対象とするため、同じ要素を含んでいても順序が異なる場合は False が返される点に注意してください。
-
Pythonで2つの二分木の葉の並び(シーケンス)が同じかどうかを確認する方法
はじめに2つの二分木が与えられたとき、それぞれの木を左から右へたどったときの葉ノードの並び(シーケンス)が一致しているかどうかを判定する問題を考えてみましょう。例えば、次のような2つの木が入力として与えられた場合を想定します。この場合、どちらの木も葉の並びは [2, 6] となるため、出力は True になります。解決のアプローチこの問題を解くためには、以下の手順に従います。結果を格納するための新しいリスト c を用意します。inorder() 関数を定義します。この関数はルートノードとリスト c を引数に取ります。c が null の場合は、新しい空のリストを作成します。ルートノードが nu
-
Pythonで二分木のすべてのノードの値が同じかどうかをチェックするプログラム
問題の概要二分木が与えられたとき、その木に含まれるすべてのノードが同じ値を持っているかどうかを判定することを考えます。例えば、次のような二分木が入力として与えられた場合、すべてのノードが同じ値を持っているため、出力は True になります。解決のアプローチこの問題は、再帰を使ってシンプルに解くことができます。以下の手順に従います。solve() 関数を定義します。この関数は root(現在のノード)と val(比較対象の値)を引数として受け取ります。root が null(None)の場合は、True を返します。空の部分木は条件を満たしているとみなせるためです。val が未定義の場合は、ro