Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Cách kiểm tra hai chuỗi có phải anagram nhau trong C#

Anagram: Chuỗi thứ hai chứa cùng các ký tự với chuỗi thứ nhất nhưng thứ tự khác nhau.

Ví dụ kiểm tra:

string str1 = "silent";
string str2 = "listen";

Các bước:

  1. Chuyển về chữ thường và thành mảng ký tự
  2. Sắp xếp mảng
  3. Chuyển lại thành chuỗi
  4. So sánh hai chuỗi
char[] ch1 = str1.ToLower().ToCharArray();
char[] ch2 = str2.ToLower().ToCharArray();
Array.Sort(ch1);
Array.Sort(ch2);
string val1 = new string(ch1);
string val2 = new string(ch2);

Ví dụ hoàn chỉnh

using System;

public class Demo
{
    public static void Main()
    {
        string str1 = "silent";
        string str2 = "listen";
        
        char[] ch1 = str1.ToLower().ToCharArray();
        char[] ch2 = str2.ToLower().ToCharArray();
        
        Array.Sort(ch1);
        Array.Sort(ch2);
        
        string val1 = new string(ch1);
        string val2 = new string(ch2);
        
        if (val1 == val2)
        {
            Console.WriteLine("Hai chuỗi là Anagram");
        }
        else
        {
            Console.WriteLine("Hai chuỗi không phải Anagram");
        }
    }
}

Kết quả

Hai chuỗi là Anagram

Cách thay thế: Dùng LINQ: str1.OrderBy(c => c).SequenceEqual(str2.OrderBy(c => c)) (cần using System.Linq).