C# Bir metindeki tersi ile aynı olan kelimelerden en uzun olanın uzunluğu

Mülakat sorusudur.

static int Uzunluk(string metin)
{
/*kelimeler listesinde tersi ile okunuşu aynı olan kelimeleri tutuyorum.
for döngüsü içerisinde her harfin sayac kadar önce ve sonrasını karşılaştırıyorum
eğer eşitlerse sayac artıyor ve 2 öncesi ve 2 sonrası şeklinde kontrol ediyorum.
değilse sayac tekrar 1 oluyor. i 1 artıp diğer karaktere geçiyorum.
*/
List<string> kelimeler = new List<string>();
var sayac = 1;
var kelime = string.Empty;
for (int i = 0; i < metin.Length; i++)
{
while (true)
{
if (i + sayac < metin.Length && i - sayac >= 0)
{
var ilk = i - sayac;
var son = i + sayac;
if (metin[ilk] == metin[son])
{
kelime = metin.Substring(ilk, (sayac * 2) + 1);
sayac++;
kelimeler.Add(kelime);
}
else
{
sayac = 1;
break;
}
}
else
{
sayac = 1;
i++;
if (i > kelime.Length)
break;
}
}
}
return kelimeler.Max(x => x.Length);
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir