Two-gram
Kotlin dili ile programcılık becerinizi geliştirmek için örnek problemleri çözmeye devam edilim. Bu yazıda ele alacağımız problem ve kodları aşağıdaki gibidir.
Problem
Two-gram, iki büyük harften oluşan düzenli bir çifttir. Örneğin; “AZ”, “AA” ve “ZA” gibi. Bu üçü birbirinden farklı two-gram çiftleridir. Bu uygulamada n adet büyük harften oluşan s dizesi verilecektir. Göreviniz; s dizesinde bulunan ve en çok tekrar edilen büyük harf çiftini (two-gram) bulmaktır.
Örneğin: s dizesi ” BBAABBBA” şeklinde ise en çok bulunan two-gram dizesi “BB” olur. Çünkü bu dize toplamda 3 kez tekrar etmektedir. “BA” dizesi 2 kez tekrar ettiği için doğru cevap olamaz. Yani özetle amacınız dizede bulunan ve en çok tekrar edilen çift harf dizisini bulup ekrana yazdırmaktır.
Giriş
Kullanıcı ilk satırda n sayısını girer. Bu sayı 2≤n≤100 şartını sağlamalıdır. n sayısı kullanıcının gireceği s dizesinin karakter sayısını belirler. İkinci satırda ise n adet büyük harften meydana gelen s dizesi girilir.
Çıkış
s dizesinde en çok tekrar edilen harf çiftini tek satırda ekranda yazınız.
Örnek
Giriş – 1
7
ABACABA
Çıkış -1
AB
Giriş -2 –
5
ZZZAA
Çıkış -2
ZZ
NOT:
İlk örnekte “BA” çifti, “AB” çifti kadar tekrar ettiği için cevap olarak “BA” da kabul edilir.
İkinci örnek sadece “ZZ” yazılabilir. Çünkü en fazla tekrar eden çift budur.
fun readLn() = readLine()!! fun main(args: Array<String>) { var n = readLn().toInt() var s = readLn() var arrSS = mutableSetOf<String>() var mutable = mutableMapOf<String, Int>() var i: Int = 0 if (n == s.length) { while (i < n - 1) { var ss = s[i] + s[++i].toString() arrSS.add(ss) } for (x in arrSS) mutable.put(x, 0) } i = 0 while (i < n - 1) { var ss = s[i] + s[++i].toString() var key = mutable.get(ss)!!.toInt() mutable.set(ss, ++key) } i=0 var ss:String?=null var maxNum=0 for (k in arrSS){ var j=mutable.get(k)!!.toInt() if (maxNum<=j){ ss=k maxNum=j } } println(ss) }
Kaynak: https://codeforces.com/contest/1212/problem/B
**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.