Algoritmalar hakkında çok karmaşık 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 bunaltıcı olacak. Bunu yapamayabilirim, doğru.
Her soruya iki dilde, bir statik dil ve bir dinamik dilde çözüm getirmeyi planlıyorum.
C dilini ve Python'u seçtim. Başlangıçta Java'yı düşündüm, ancak alan sınırlı. İlgileniyorsanız, kendiniz deneyin
LeetCode 884. İki cümlede en az kullanılan kelimeleri bulun (İki Cümlede Yaygın Olmayan Sözcükler)
A ve B olmak üzere iki cümle veriyoruz. (Cümle, boşluklarla ayrılmış bir dizi kelimedir. Her kelime yalnızca küçük harf içerir.)
Bir sözcük bir cümlede yalnızca bir kez geçiyorsa ve diğer cümlede görünmüyorsa, sözcük yaygın olarak kullanılmaz.
Tüm yaygın olmayan kelimelerin bir listesini döndür.
Listeye herhangi bir sırayla dönebilirsiniz.
Not:
İlk olarak, iki dizgiyi tek tek kelimelere ayırmalı ve bir dizide saklamalıyız. Dizinin iki dizgiyi bölmenin sonucunu sakladığını unutmayın, bu nedenle uzunluğuna dikkat edin.
Ardından, yalnızca bir kez görünen kelimeleri bulmak için diziyi yineleyin.
kod aşağıdaki gibi gösterilir:
Satır 10 ~ 13, A ve B'yi _A ve _B olarak kopyalayın, çünkü prensipte girdi dizesini değiştirmek istemiyorum.
Satır 14 ~ 18, _A ve _B arasında bölünmüş kelimeleri saklamak için 400 uzunluğunda bir dize dizisi kelimesi tanımlayın ve ardından _A ve _B'yi bölmek için özel bölme () işlevini çağırın ve split () kullanılır Bölme işlemini tamamlamak için kütüphane işlevi strtok () kullanılır. Strtok () kullanma yöntemine dikkat edin. İlk parametre, ilk kez çağrıldığında bir dize adresi olmalı ve daha sonra tekrar çağrıldığında ilk parametre NULL olmalıdır.
23. satırdan 36. satıra kadar, yalnızca bir kez görünen kelimeleri bulmak ve bunları geri dönüş listesinde saklamak için dizi kelimelerini çaprazlayın.
32 ~ 33 satırlarına dikkat edin, çünkü kelimelerdeki dizeler _A ve _B'den gelir ve _A ve _B, uncommonFromSentences () işlevinin yığın alanında yer alır ve arayan kişiye geri gönderilemez, bu nedenle burada bir öbeği yeniden tahsis etmemiz gerekir Döndürülecek dizeyi saklamak için hafıza alanı.
Sayma ile ilgilidir, bu nedenle Counter ile uygulanması nispeten basit olacaktır.
Önce A ve B'yi birleştirin ve ardından her kelimenin görünme sayısını sayabilen bir Sayaç oluşturmak için bölün.
Son olarak, yalnızca bir kez görünen kelimeler döndürülür.