C# En Uzun Tekrar Eden Alt Dize Bulma
Kullanıcının girdiği metindeki en uzun tekrar eden alt diziyi bulan C# programı.
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
Console.Write("Metni girin: ");
string metin = Console.ReadLine();
string enUzunAltDizi = FindLongestRepeatingSubstring(metin);
Console.WriteLine("En uzun tekrar eden alt dize: " + enUzunAltDizi);
}
private static string FindLongestRepeatingSubstring(string str)
{
int len = str.Length;
string enUzunAltDizi = "";
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
string altDizi = str.Substring(i, j - i);
int tekrarSayisi = CountOccurrences(str, altDizi);
if (tekrarSayisi > 1 && altDizi.Length > enUzunAltDizi.Length)
{
enUzunAltDizi = altDizi;
}
}
}
return enUzunAltDizi;
}
private static int CountOccurrences(string str, string subStr)
{
int count = 0;
int i = 0;
while ((i = str.IndexOf(subStr, i)) != -1)
{
i += subStr.Length;
count++;
}
return count;
}
}
C# ile Kullanıcıdan bir metin alıyhoruz.
Console.Write("Metni girin: ");
string metin = Console.ReadLine();
C# ile En uzun tekrar eden alt dizeyi saklamak için bir değişken oluşturuyoruz.
string enUzunAltDizi = FindLongestRepeatingSubstring(metin);
C# ile Sonuçları ekrana yazdırıyoruz.
Console.WriteLine("En uzun tekrar eden alt dize: " + enUzunAltDizi);
}
C# ile Verilen metindeki en uzun tekrar eden alt dizeyi bulan metot.
private static string FindLongestRepeatingSubstring(string str)
{
int len = str.Length;
// En uzun alt dizeyi saklamak için boş bir dize oluşturuyoruz.
string enUzunAltDizi = "";
// Tüm alt dize kombinasyonlarını deneyerek en uzun tekrar eden alt dizeyi buluyoruz.
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
// Bir alt dize seçiyoruz.
string altDizi = str.Substring(i, j - i);
// Alt dizenin metinde kaç kez tekrar ettiğini sayıyoruz.
int tekrarSayisi = CountOccurrences(str, altDizi);
// Eğer alt dize en az 2 kez tekrar ediyorsa ve daha uzunsa, en uzun alt dizeyi güncelliyoruz.
if (tekrarSayisi > 1 && altDizi.Length > enUzunAltDizi.Length)
{
enUzunAltDizi = altDizi;
}
}
}
return enUzunAltDizi;
}
C# ile Verilen alt dizenin metinde kaç kez tekrar ettiğini sayan metot.
private static int CountOccurrences(string str, string subStr)
{
int count = 0;
int i = 0;
while ((i = str.IndexOf(subStr, i)) != -1)
{
i += subStr.Length;
count++;
}
return count;
}