سوال 242
عنوان سوال : Valid Anagram
- آسان
- مرتب سازی
- هش تیبل
- استرینگ
دو رشتهٔ s و t داده شدهاند.
باید بررسی کنید که آیا t یک آنامگرام از s هست یا نه.
آنامگرام به کلمه یا عبارتی گفته میشود که با جابهجایی حروف یک کلمهٔ دیگر ساخته شده باشد و تمام حروف اصلی دقیقاً یکبار استفاده شده باشند.
مثال:
ورودی:
s = "anagram"
t = "nagaram"
خروجی:
true
مثال:
ورودی:
s = "rat"
t = "car"
خروجی:
false
محدودیتها:
1 <= s.length, t.length <= 5 * 10^4- رشتههای
sوtفقط شامل حروف کوچک انگلیسی هستند.
راه حل
public bool IsAnagram(string s, string t)
{
if (s.Length != t.Length)
return false;
var hashtable = new Hashtable(s.Length);
var hashtable1 = new Hashtable(s.Length);
for (var item = 0; item < s.Length; item++)
{
if (!hashtable.ContainsKey(s[item]))
{
hashtable.Add(s[item], 1);
}
else
{
hashtable[s[item]] = (int)hashtable[s[item]] + 1;
}
if (!hashtable1.ContainsKey(t[item]))
{
hashtable1.Add(t[item], 1);
}
else
{
hashtable1[t[item]] = (int)hashtable1[t[item]] + 1;
}
}
foreach (DictionaryEntry item in hashtable)
{
if (!item.Value.Equals(hashtable1[item.Key]))
{
return false;
}
}
return true;
}