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

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 が返される点に注意してください。

  1. Pythonで2つの二分木の葉の並び(シーケンス)が同じかどうかを確認する方法

    はじめに2つの二分木が与えられたとき、それぞれの木を左から右へたどったときの葉ノードの並び(シーケンス)が一致しているかどうかを判定する問題を考えてみましょう。例えば、次のような2つの木が入力として与えられた場合を想定します。この場合、どちらの木も葉の並びは [2, 6] となるため、出力は True になります。解決のアプローチこの問題を解くためには、以下の手順に従います。結果を格納するための新しいリスト c を用意します。inorder() 関数を定義します。この関数はルートノードとリスト c を引数に取ります。c が null の場合は、新しい空のリストを作成します。ルートノードが nu

  2. Pythonで二分木のすべてのノードの値が同じかどうかをチェックするプログラム

    問題の概要二分木が与えられたとき、その木に含まれるすべてのノードが同じ値を持っているかどうかを判定することを考えます。例えば、次のような二分木が入力として与えられた場合、すべてのノードが同じ値を持っているため、出力は True になります。解決のアプローチこの問題は、再帰を使ってシンプルに解くことができます。以下の手順に従います。solve() 関数を定義します。この関数は root(現在のノード)と val(比較対象の値)を引数として受け取ります。root が null(None)の場合は、True を返します。空の部分木は条件を満たしているとみなせるためです。val が未定義の場合は、ro