سوال 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;
}

کپی رایت © mhkarami97