Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Kompüter elmi
  3. Problem həlli yanaşması
  4. Tezlik sayğacı nümunəsi (Frequency Counter Pattern)

Tezlik sayğacı nümunəsi (Frequency Counter Pattern)

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Problem həlli yanaşması
problemsolvingpatternfrequencycounter
1 Yazı 1 Yazarlar 36 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • codexC Oflayn
    codexC Oflayn
    codex
    üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    Bu nümunə obyektlərdən (objects) və ya dəstlərdən (sets) istifadə edərək dəyərlərin və ya onların tezliklərinin toplanmasını nəzərdə tutur. Bu yanaşma, çox vaxt daxili döngülərin (nested loops) və O(n²) əməliyyatlarının qarşısını almağa kömək edir, xüsusən də massivlər (arrays) və sətirlərlə (strings) işləyərkən.


    Misal

    İki sətir verildikdə, ikinci sətirin birinci sətirin anagramı olub-olmadığını müəyyən edən bir funksiya yazın.

    Anagram nədir?
    Anagram – bir söz və ya ifadənin hərflərini yenidən düzərək başqa bir söz və ya ifadə yaratmaqdır.

    Məsələn:

    • “cinema” → “iceman”
    • “listen” → “silent”

    Direkt həll (O(n log n))

    Bu yanaşma, hər iki sətiri hərflərinə ayırıb sıralamaq və sonra onları müqayisə etmək üsuluna əsaslanır.

    Kod:

    function isAnagram(str1, str2) { 
      // Uzunluqlar fərqlidirsə, anagram ola bilməz
      if (str1.length !== str2.length) {
        return false;
      }
    
      // Hərfləri ayırıb sıralayırıq
      const arr1 = str1.split('').sort();
      const arr2 = str2.split('').sort();
    
      // Sıralanmış massivləri müqayisə edirik
      for (let i = 0; i < arr1.length; i++) {
        if (arr1[i] !== arr2[i]) {
          return false;
        }
      }
    
      return true;
    }
    
    // Test
    console.log(isAnagram("cinema", "iceman"));  // true
    console.log(isAnagram("hello", "world"));    // false
    

    ⏳ Bu həllin mürəkkəbliyi: O(n log n) (çünki sıralama əməliyyatı O(n log n) vaxt aparır).


    Tezlik sayğacı ilə həll (O(n))

    Bu yanaşma hərflərin sayını obyektlərdə saxlayaraq müqayisə etməyə əsaslanır. Sıralama əvəzinə sayma üsulu istifadə olunduğu üçün daha sürətlidir və O(n) mürəkkəbliyinə malikdir.

    Kod:

    function validAnagram(str1, str2) { 
        if (str1.length !== str2.length) return false;
        
        const obj = {};
        
        // İlk sətirdəki hərfləri sayırıq
        for (let i = 0; i < str1.length; i++) {
            const letter = str1[i];
            obj[letter] = ++obj[letter] || 1;
        }
    
        // İkinci sətirdəki hərfləri yoxlayırıq
        for (let j = 0; j < str2.length; j++) {
            const letter = str2[j];
            if (!obj[letter]) {
                return false;
            } else {
                obj[letter]--;
            }
        }
        
        return true;
    }
    
    // Test
    console.log(validAnagram('anagram', 'nagaram')) // true
    console.log(validAnagram('anagrams', 'nagaramm')) // false
    console.log(validAnagram("rat", "car")) // false
    

    ⏳ Bu həllin mürəkkəbliyi: O(n) (çünki hər iki sətir yalnız bir dəfə dövr edilir).


    Nəticə

    🔹 Direkt həll sətirləri sıralamaqla müqayisə edir və O(n log n) mürəkkəbliyinə malikdir.
    🔹 Tezlik sayğacı həlli isə hərflərin sayını yoxlamaqla daha sürətli və effektivdir (O(n)).

    ✨ Tezlik sayğacı nümunəsi, yalnız anagram yoxlamaq üçün deyil, müxtəlif massiv və sətir analizlərində də faydalıdır! 🚀

    1 cavab Son cavab
    • codexC codex bu mövzunu -də sabitlədi
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    • İlk yazı
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar