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)
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.
İ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:
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 uygulaması temelde C uygulamasıyla aynıdır.
kod aşağıdaki gibi gösterilir:
Java uygulaması temelde C dili ile aynıdır.
kod aşağıdaki gibi gösterilir: