public class Retazce {
/**
* @param args
*/
public static void main(String[] args) {
String retazec = new String("abcdefabcdefghijklabcde");
String vzorka = new String("abcd");
najdiVyskyty(retazec, vzorka);
System.out.println(prefixovySufix("abababa"));
System.out.println(prefixovySuffix2("abababa"));
}
public static void najdiVyskyty(String retazec, String vzorka) {
int poz = 0;
int pomoc = 0;
while (poz <= retazec.length() - vzorka.length()) {
int i = 0;
while (vzorka.charAt(i) == retazec.charAt(poz + i)) {
i++;
// System.out.println(i);
if (vzorka.length() == i) {
pomoc++;
}
if (i > vzorka.length() - 1)
break;
}
poz++;
}
System.out.println(pomoc);
}
public static int prefixovySufix(String s) {
int najdlhsiPS = 0;
for (int i = 0; i < s.length() - 1; i++) {
String sub = s.substring(0, i);
int dlzka = 0;
for (int j = 0; j < sub.length(); j++) {
//
System.out.println(s.charAt(s.length() - i + j) + " " +sub);
if (s.charAt(j) == s.charAt(s.length() - i + j)) {
dlzka++;
System.out.println(sub+" "+dlzka);
if (dlzka == sub.length() && dlzka > najdlhsiPS)
najdlhsiPS = dlzka;
}
}
}
return najdlhsiPS;
}
public static int prefixovySuffix2(String in) {
// premenna v ktorej je ulozeny najdlhsi prefixovySuffix
int zaciatok = 0;
// dohodli sme sa ze nebude cela dlzka, preto =1
for (int aktualnyZnak = 1; aktualnyZnak < in.length(); aktualnyZnak++)
// ak sa rovnaju znaky, posuniem obidve "znacky"
if (in.charAt(aktualnyZnak) == in.charAt(zaciatok)) {
zaciatok++;
// ak sa nerovnaju, tak, nastavim zaciatok na 1/0, podla toho ci
// je rovnaky ako prvy znak
} else if (in.charAt(aktualnyZnak) == in.charAt(0))
zaciatok = 1;
else
zaciatok = 0;
return zaciatok;
}
// public static int prefixovySufix(String s) {
//
// }
}