LeetCode Temel Algoritma Problemi Bölüm 99: Bir dizedeki ilk benzersiz karakteri bulun

Teknik iyileştirme aşamalı bir süreçtir, bu yüzden bahsettiğim leetcode algoritması soruları en basit seviyeden başlar, sonra orta zorluk derecesine ve nihayet zor zorluğa.

Şu anda, uygulama dili olarak C dili, Python ve Java'yı seçiyorum çünkü bu üç dil oldukça tipik. Sınırlı alan ve enerji nedeniyle, diğer dilleri uygulamakla ilgilenen arkadaşlar, lütfen kendiniz deneyin.

Temel zorluk hemen hemen aynı olduğunda daha fazla içerik eklemeyi planlıyorum.İşletim sisteminden protokol yığınına, dağıtılmış sohbetten büyük veri çerçevesine, büyük veriden yapay zekaya kadar konuşabilirim ...

Herhangi bir sorunuz varsa makaleden sonra yorum yapabilir veya bana özel mesaj gönderebilirsiniz. .

Paylaşmaya devam edeceğim, bu yüzden lütfen dikkat edin.

LeetCode 387. Bir dizedeki ilk benzersiz karakter (Bir Dizedeki İlk Benzersiz Karakter)

Sorun Açıklaması:

Bir dizge verildiğinde, ilk benzersiz karakterini bulun ve dizinini döndürün. Mevcut değilse -1 döndürür.

Not: Dizenin yalnızca küçük harfler içerdiğini varsayabilirsiniz.

Misal:

C dili uygulaması:

İlk içgüdü, tüm dizeyi geçmek, her harfin kaç kez göründüğünü saymak ve dizedeki ilk harfin alt simgesini bulmak için tekrar çapraz geçiş yapmaktır. Bu algoritmanın karmaşıklığı O (n) ve for döngüsünün iki kez yürütülmesi gerekiyor.

Ama bu sorunu bir döngüde çözmek istiyorum. Daha önce kullandığımız yöntemi gerçekten kullanabileceğimizi fark ettim. 26 harfin her birinin en sol ve en sağ konumlarını aynı anda dizenin sol ve sağ taraflarından bulabiliriz.Bu şekilde üç durum vardır:

  • Dizide böyle bir harf olmadığını belirten arama başarısız olur;
  • İki arama harfinin konumu farklıysa, bu harfin dizede birden çok kez göründüğü anlamına gelir;
  • İki arama harfinin konumu aynıysa, bu, harfin dizede bir kez göründüğü anlamına gelir, bu bizim aradığımız şeydir, bu nedenle yalnızca alt simgesinin en küçük olup olmadığını görmemiz gerekir;
  • kod aşağıdaki gibi gösterilir:

    Sırasıyla soldan ve sağdan her harfi bulmak için yerleşik işlevler strchr ve strrchr kullanırız İşlev bir işaretçi döndürür ve alt simge döndürülen işaretçi ile s arasındaki farktır.

    Python dilinin uygulanması:

    Python uygulaması temelde C uygulamasıyla aynıdır.

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

    Java dilinin uygulanması:

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

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

    Amiral gemisi makinenin değerini kaybetmeden, vivo Y93'ün ilk deneyimi: rakiplerle aynı fiyata buluşmak zor
    önceki
    "Mutlu Komedyen" yapımcı "eğri listesi": Hualu Baina, 2 milyar değerinde olduğu söylenen Happy Media'yı satın almayı planlıyor
    Sonraki
    Onunla kim kendisine TVB'nin ilk kız kardeşi demeye cesaret edebilir?
    Vivo, JD.com'da Double Eleven'da 400 yuan'a varan düşüşle alışveriş çılgınlığını başlattı
    Koridorun köşesine gizlenmiş, tek bir kadına saldırıp onu soyduktan sonra, açıklanamaz bir şekilde gözetim altında kayboldu.
    Şehrin nabzını tutarken, "Yi" havalanır ve "hareket eder". Bugün, Jiefangbei "Şehir Kapısı" ndaki 7 yaşındaki Yidong sizi Chongqing şehrinin değişikliklerine tanık olmaya davet ediyor
    Huayi Brothers, Yinhan Technology'nin% 25 hissesini 650 milyon yuan'a sattı, oyun alanını daralttı ve çok yönlü bir şekilde filmlere geri mi dönüyordu?
    Üzgünüz, Google Play'i kullanmak gerçekten "asildir"!
    Casus fotoğraflar çirkin CONCEPTS x NIKE SB Dunk Çirkin Noel hatıra modeline tükürüldü, gerçek olan şey çok güzel mi? !
    On yıldan fazla bir süredir soya sosu çalan TVB dramasında, en popüler altın heykelde en iyi yardımcı kadın oyuncu nasıl oldu?
    Academia NeurIPS 2017 bildirileri 2018 atıf sıralaması açıklandı, işte en iyi üç makalenin yorumu
    Yang Weidong: TV dizileri ve web dizileri geçmişte kaldı ve şimdi süper dramların çağı!
    LeetCode Temel Algoritma Problemi Bölüm 96: Sıralı bir diziyi dengeli bir ikili arama ağacına dönüştürme
    2017 Tokyo Motor Show: Toyota'nın yeni taç konsept otomobili yayınlandı
    To Top