Ohjelmassa etsitään osajonoja ensimmäisestä merkkijonosta. Tarkistettavat osajonot otetaan toisesta merkkijonosta. Ohjelmassa tulostetaan koko osajono, eli esimerkiksi tulostetaan merkki eikä m, me, mer, merk, merkk, merkki.
import java.util.Scanner;
public class Osajonot {
public static void main(String[] args){
Scanner syote = new Scanner(System.in);
String mjn = "";
String mjn_2 = "";
String ojn = "";
int indeksi = 0;
boolean onko = false;
//Syötetään lähtötiedot.
do {
System.out.println("Syötä kaksi merkkijonoa.");
System.out.println("Ensimmäisen tulee olla toista pidempi.");
mjn = syote.next();
mjn_2 = syote.next();
} while (mjn.length() <= mjn_2.length());
//Etsitään osajonot.
//Osajonot otetaan toisesta merkkijonosta
//Sen jälkeen katsotaan, löytyykö kyseinen osajono ensimmäisestä merkkijonosta.
//Osajonon osia ei tulosteta erikseen vaan koko osajono.
for (int x = 0; x < mjn_2.length(); x++){
onko = false; //Oletetaan aluksi, että osajonoa ei ole.
for (int y = x+1; y <= mjn_2.length(); y++){
if (mjn.contains(mjn_2.substring(x,y))){
//Osajono löydetty.
//Katsotaan, kuuluuko osajonoon lisää merkkejä.
//Seuraavaa osajonoa etsitään nykyisen osajonon lopun jälkeen.
onko = true;
ojn = mjn_2.substring(x,y);
indeksi = y-1;
}
}
//Tulostetaan koko osajono lopuksi.
if (onko == true){
x = indeksi; //Etsitään osajonoa myöhemmistä kohtaa.
System.out.println(ojn);
}
}
}
}Tällä tavalla saadaan tietyn pituisia osajonoja. Esimerkissä kolmen merkin pituisia osajonoja.
for (int x = 0; x < mjn_2.length(); x++){
maara = 0;
onko = false;
for (int y = x+1; y <= mjn_2.length(); y++){
if (mjn.contains(mjn_2.substring(x,y))){
//Osajono löydetty.
//Katsotaan, kuuluuko osajonoon lisää merkkejä.
//Seuraavaa osajonoa etsitään nykyisen osajonon lopun jälkeen.
onko = true;
maara++;
ojn = mjn_2.substring(x,y);
indeksi = y-1;
}
}
//Tulostetaan koko osajono lopuksi.
if (onko == true){
x = indeksi; //Etsitään osajonoa myöhemmistä kohtaa.
if (maara == 3){
System.out.println(ojn);
}
}
}Python:
haystack = input("Mistä etsitään: ")
needles = input("Minkä osia etsitään: ")
while needles:
needle = needles
while needle not in haystack:
needle = needle[:-1]
if needle:
print(needle)
needles = needles[len(needle):]
else:
needles = needles[1:]Aihe on jo aika vanha, joten et voi enää vastata siihen.