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:
- Chuyển về chữ thường và thành mảng ký tự
- Sắp xếp mảng
- Chuyển lại thành chuỗi
- 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).