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.