Temel LeetCode Algoritma Problemi Bölüm 59: Problemleri Özel Kurallara Göre Sıralama

Algoritmalar hakkında çok karışık olan makaleler nasıl yazılır. Son olarak, yazmaya en basit seviyeden başlamanın daha iyi olacağını düşünüyorum. Başlangıçtan itibaren, yapay zeka, makine öğrenimi algoritmaları ve çok sayıda matematik ve optimizasyon bilgisi gibi bazı ağır ağırlıklara sahip olacağım. Sanırım çok bunalıma girecek. Elbette Bunu yapamayabilirim, doğru.

Her soru için iki dilde, statik dil ve dinamik dilde çözüm vermeyi planlıyorum.

Uygulama dilleri olarak C dili, Python ve Java'yı seçiyorum.Kısıtlı alan nedeniyle, diğer dillerin uygulanmasıyla ilgilenen arkadaşlar, lütfen kendiniz deneyin.

LeetCode 953. Yabancı Sözlüğü Doğrulama

Sorun Açıklaması:

Yabancı bir dilde, İngilizce küçük harfleri de kullanmaları şaşırtıcıdır, ancak farklı bir sıra kullanabilirler. Sıra, belirli bir harf dizisidir.

Şimdi, bazı kelimelerden ve bir sıra dizisinden oluşan bir kelime dizisi verildiğinde, kelimeler tarafından verilen kelimeler sıraya göre sıralanırsa, doğru, aksi takdirde yanlış döndür.

Not:

  • 1 < = words.length < = 100
  • 1 < = kelimeler .length < = 20
  • order.length == 26
  • kelimeler Sırayla ve sırayla karakterler İngilizce küçük harflerdir.
  • Misal:

    C dili uygulaması:

    Benim fikrim, iki bitişik kelimeyi sırayla geçmek ve önceki kelime ile sonraki kelimenin aynı konumundaki karakterlerin harf sırası kuralına göre sıralı olup olmadığını karşılaştırmaktır.

    Örnek olarak yukarıdaki Örnek 2'yi ele alalım. Dünyadan ve satırdan geçiyorsanız, bunların baş harfleri sırasıyla w ve r'dir, bunlar sırasıyla 0 ve 2 alt simgelerinin konumlarındadır ve w, r'nin önündedir, dolayısıyla sıralıdırlar.

    Ayrıntılı kod aşağıdaki gibidir:

    Düzen, sıralamanın temelidir, onu sürekli aramamız gerekir, bu yüzden aramayı hızlandırmak için önce bir yapı oluşturmamız gerekir. Kod 2 ~ 7 satır, burada 26 uzunluğunda bir dizi tanımlıyoruz, harfi dizinin alt simgesiyle eşleştiriyoruz ve değer mektubun sıradaki konumudur.

    Kod 8-20 tüm geçiş sürecidir.Öncelikle karşılaştırılacak iki dizenin uzunluğunu elde etmemiz gerekir.Karakterlerini karşılaştırırken en kısa sözcüğün uzunluğunu geçiş sınırı olarak, yani sondaki en kısa sözcüğü kullanırız Bir karakterin üzerinden geçildikten sonra, iki kelime karakterinin karşılaştırması sona erer. Geçiş devam ederse, bir taşma hatası oluşacaktır, bu nedenle burada sınırın belirlenmesi önemlidir.

    Kod 13 ~ 17 satırları, mektubun sıradaki aynı pozisyondaki konumunu karşılaştırmak için iki kelime karakterinin karşılaştırmasıdır. Burada üç durum ele alınmaktadır:

  • İki karakter eşitse, sonraki karakter karşılaştırılmalıdır;
  • Konumdaki iki kelimenin alfabetik sıralaması sıraya dayanıyorsa Sıralı değil , O zaman karşılaştırmaya devam etmeye ve doğrudan yanlış döndürmeye gerek yoktur;
  • Konumdaki iki kelimenin alfabetik sıralaması sıraya dayanıyorsa Sıralı , O zaman bu iki kelimeyi karşılaştırmaya gerek yok , Doğrudan çıkın ve bir sonraki çifti karşılaştırmaya devam edin;
  • 19. satır, örnek3 durumuyla ilgilidir. Çapraz geçişte, seçilen geçiş uzunluğu sınırı en kısa sözcüğün uzunluğudur. İki sözcüğün karakterleri bu uzunluk içinde eşitse, kod buraya gelecektir. , Uzun sözcük öndeyse, yanlış döndürmelidir.

    Python dilinin uygulanması:

    Python uygulaması C diline benzer.Ayrıca sorgu sırasını hızlandırmak için bir yapı inşa eden ilk kişidir.Python, doğrudan ve verimli olduğu için liste yerine doğal olarak bir sözlük kullanır.

    Daha sonra, liste oluşturucu aracılığıyla her kelimeyi doğrudan bir sayı formuna kodlayın ve her sayı, sıradaki harfin alt simgesidir.

    Son olarak, iki bitişik elemanı karşılaştırmak için zip kullanıyoruz.Bu yöntem aynı zamanda önceki soruda da kullanılmıştır. Python ayrıca uygun bir yere sahiptir, sıra doğrudan karşılaştırılabilir.

    kod aşağıdaki gibi gösterilir:

    Java dilinin uygulanması:

    Java uygulaması temelde C dili uygulamasıyla aynıdır.

    kod aşağıdaki gibi gösterilir:

    Üç rengi sevmedin mi? Adidas Y-3 yepyeni ayakkabılar ve gizli renkler sizleri bekliyor!
    önceki
    Tüm gurmeler bu Hong Kong ünlü restoranlarına check-in yapmaya gitti, bilmiyor musun?
    Sonraki
    Temel LeetCode algoritma problemi Bölüm 58: Yinelenen elemanları bulma
    Yerli animasyon 61. vites, büyük yenilgiyi yeniden üretiyor: para kazanmak için yalnızca yeniden gösterime ve türevlere güvenebilir mi?
    Zotye'nin yeni E200 resmi harita bilgileri bu yıl içinde listelenebilir
    Dünyanın düşmanı olsa bile kötü bir kelime olmadığını söylemiyor Bu Eason Chan'ın aşkı
    Çinli tüketicileri anlamak ve Beijing Hyundai'nin yaratıcı yolunu görmek için 15 yılı kullanmak
    Sınırlı sayıda 12 çift Vans, bu sefer Çin'de satmayı tercih ediyor!
    Temel LeetCode Algoritması Problemi Bölüm 57: Alfabetik Büyük Harf Değiştirme Problemini Çözmek İçin İki Yöntem
    TVB muhabiri bir internet ünlüsü oldu, bir varyete şovu onu Huang Zihua'nın halefi yaptı
    Güçlü spor genleri ile deneme sürüşü MG 61.5T manuel şanzıman
    Apple A12X koşu puanları açığa çıktı, bazı dizüstü bilgisayarlar üç puandan daha düşük
    Yerli Hint tarzı mı? Bu zıt renkler çifti Nike Air Force 1 BHM, ilk başta açıklanan sürüm haberlerine aldırış etmiyor!
    LeetCode Algoritma Probleminin Temelleri Bölüm 56: Adil Şeker Değişim Problemi
    To Top