C# でパリンドローム文字列を確認する

Muhammad Maisam Abbas 2024年2月16日
  1. C# の String.Substring() メソッドを使用して回文文字列を確認する
  2. C# の LINQ メソッドでパリンドローム文字列を確認する
C# でパリンドローム文字列を確認する

このチュートリアルでは、C# で文字列が回文であるかどうかを確認する方法を紹介します。

C# の String.Substring() メソッドを使用して回文文字列を確認する

文字列が前後に同じように読み取られた場合、その文字列は回文と見なされます。残念ながら、C# では文字列が回文であるかどうかを確認するための組み込みメソッドはありません。ただし、String.Substring() メソッドを使用して文字列を中央から分割し、前半を取得することはできます。文字列を文字の配列に変換し、Array.Reverse() メソッドで文字のシーケンスを逆にし、逆の配列を文字列に変換してから、新しい文字列をから分割することで、後半の逆を取得できます。真ん中は String.Substring() メソッドです。前半が後半の逆に等しい場合、文字列は回文です。前半が後半と等しくない場合、文字列は回文ではありません。次のコード例は、C# の String.Substring() メソッドを使用して、文字列が回文であるかどうかを確認する方法を示しています。

using System;
using System.Linq;

namespace palindrome {
  class Program {
    public static bool checkPalindrome(string mainString) {
      string firstHalf = mainString.Substring(0, mainString.Length / 2);
      char[] arr = mainString.ToCharArray();

      Array.Reverse(arr);

      string temp = new string(arr);
      string secondHalf = temp.Substring(0, temp.Length / 2);

      return firstHalf.Equals(secondHalf);
    }
    static void Main(string[] args) {
      bool palindrome = checkPalindrome("12321");
      Console.WriteLine(palindrome);
    }
  }
}

出力:

True

上記のコードでは、C# の String.Substring() メソッドを使用して、文字列 12321 が回文であるかどうかを確認しました。

C# の LINQ メソッドでパリンドローム文字列を確認する

LINQ 内の SequenceEqual() メソッドは、C# の要素の 2つのシーケンスを比較します。LINQ 内の Reverse() メソッドは、C# のシーケンスの要素を逆にします。Reverse() メソッドを使用して文字列を反転し、SequenceEqual() メソッドを使用して元の文字列と比較できます。次のコード例は、C# の LINQ メソッドを使用して、文字列が回文であるかどうかを確認する方法を示しています。

using System;
using System.Linq;

namespace palindrome {
  class Program {
    public static bool checkPalindrome2(string mainString) {
      return mainString.SequenceEqual(mainString.Reverse());
    }
    static void Main(string[] args) {
      bool palindrome = checkPalindrome2("12321");
      Console.WriteLine(palindrome);
    }
  }
}

出力:

True

上記のコードでは、C# の SequenceEqual() メソッドと Reverse() メソッドを使用して、文字列 12321 が回文であるかどうかを確認しました。このアプローチは、より単純であるため、以前のアプローチよりも優先されます。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp String