code-neon

Java En Uzun Tekrar Eden Alt Dize Bulma

Kullanıcının girdiği metindeki en uzun tekrar eden alt diziyi bulan Java programı.

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
        System.out.print("Metni girin: ");
        String metin = scanner.nextLine();

        String enUzunAltDizi = findLongestRepeatingSubstring(metin);
        System.out.println("En uzun tekrar eden alt dize: " + enUzunAltDizi);
        scanner.close();
    }

    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);
                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;
    }
}

Java ile Kullanıcıdan metni al

        System.out.print("Metni girin: ");
        String metin = scanner.nextLine();

Java ile En uzun tekrar eden alt dizeyi bul ve sonucu ekrana yazdır

        String enUzunAltDizi = findLongestRepeatingSubstring(metin);
        System.out.println("En uzun tekrar eden alt dize: " + enUzunAltDizi);
        scanner.close();
    }

Java ile En uzun tekrar eden alt dizeyi bulan metot

    private static String findLongestRepeatingSubstring(String str) {
        int len = str.length();
        String enUzunAltDizi = "";

Tüm alt dizileri gezmek için i ve j indeksleri kullanılır

        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
                // Alt dizeyi bul
                String altDizi = str.substring(i, j);
                // Alt dizenin tekrar sayısını hesapla
                int tekrarSayisi = countOccurrences(str, altDizi);
                // Alt dize en az 2 kere tekrar etmişse ve daha uzunsa, en uzun alt dizi olarak ayarla
                if (tekrarSayisi > 1 && altDizi.length() > enUzunAltDizi.length()) {
                    enUzunAltDizi = altDizi;
                }
            }
        }
        return enUzunAltDizi;
    }

Java ile Bir ana dizide alt dizelerin tekrar sayısını hesaplayan 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;
    }