using System;
namespace Anagram_Test
{
class ClassCheckAnagram
{
public int check_anagram(char[] a, char[] b)
{
Int16[] first = new Int16[26];
Int16[] second = new Int16[26];
int c = 0;
for (c = 0; c < a.Length; c++)
{
first[a[c] - 'a']++;
}
c = 0;
for (c=0; c<b.Length; c++)
{
second[b[c] - 'a']++;
}
for (c = 0; c < 26; c++)
{
if (first[c] != second[c])
return 0;
}
return 1;
}
}
}
using System;
namespace Anagram_Test
{
class Program
{
static void Main(string[] args)
{
ClassCheckAnagram cca = new ClassCheckAnagram();
Console.WriteLine("Enter first string\n");
string aa = Console.ReadLine();
char[] a = aa.ToCharArray();
Console.WriteLine("\nEnter second string\n");
string bb = Console.ReadLine();
char[] b = bb.ToCharArray();
int flag = cca.check_anagram(a, b);
if (flag == 1)
Console.WriteLine("\nThey are anagrams.\n");
else
Console.WriteLine("\nThey are not anagrams.\n");
Console.ReadKey();
}
}
}
Эта программа показывает, как вы можете проверить, являются ли две заданные строки ввода Анаграммы или нет в языке CSharp. Анаграммы - это два разных слова или комбинации символов, которые имеют одинаковые алфавиты и их количество. Поэтому определенный набор алфавитов может создавать множество перестановок анаграмм. Другими словами, если у нас есть один и тот же набор символов в двух словах (строки), то они являются анаграммами.
Мы создаем функцию, которая вводит в качестве пары входных данных массива символов. Когда мы получаем два разных набора символов, мы проверяем счет каждого алфавита в этих двух наборах. Наконец, мы подсчитываем и проверяем, является ли значение количества символов для каждого алфавита одинаковым или нет в этих наборах. Если все символы встречаются с одинаковой скоростью в обоих наборах символов, тогда мы объявляем, что наборы являются анаграммами, иначе нет.
Это не будет работать для ввода, который содержит капитал символов ASCII и не будет работать для любого входа юникода –