Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.io.*;
- /**
- * 3. �l
- * http://www.teaduskool.ut.ee/orb.aw/class=file/action=preview/id=3072/eda.et.pdf
- */
- public class Olympiaad {
- static String lause;
- static String mumbajumba;
- static String mumbajumbaRev;
- static ArrayList<String> s�nadFinal = new ArrayList<String>();
- static Writer output;
- public static void main(String[] args) throws IOException {
- //System.out.println("Programm k�ivitatud.");
- try {
- BufferedReader input = new BufferedReader(new FileReader("mj.sis"));
- lause = input.readLine();
- mumbajumba = input.readLine();
- input.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- output = new BufferedWriter(new FileWriter(new File("mj.val")));
- //lause = "AA";
- //mumbajumba = "AA";
- System.out.println(lause);
- System.out.println(mumbajumba);
- teeS�nad();
- output.close();
- //System.out.println("Programm suletud.");
- }
- public static String reverse(String s�na) {
- return new StringBuffer(s�na).reverse().toString();
- }
- public static void teeS�nad() throws IOException {
- mumbajumbaRev = reverse(mumbajumba);
- //Rekursioon
- s�nadFinal = leiaJ�rgmineS�na(0);
- //Tulemused
- int s�nadeArv = s�nadFinal.size();
- output.write(s�nadeArv+"\n");
- System.out.println("\n\n\n\nFinal s�nade arv: "+s�nadeArv);
- for (String s�na : s�nadFinal) {
- output.write(s�na+"\n");
- System.out.println(s�na);
- }
- }
- public static ArrayList<String> leiaJ�rgmineS�na(int nihe) {
- String ajutine = ""; //Jooksev sisend(t�itub t�hthaaval)
- //Hetkel olev v�him s�nade arv
- ArrayList<String> v�himS�nad = new ArrayList<String>();
- //Sisend, kus j�tame algusest vahele "nihe" arv t�hte
- String sisend = lause.substring(nihe);
- //Vaata sisend l�bi
- for (int i = 0; i < sisend.length(); i++) {
- //System.out.println("i: "+i);
- //System.out.println("sisend.length(): "+sisend.length());
- char t�ht = sisend.charAt(i); //Jooksev t�ht
- ajutine += t�ht; //Lisame ajutisele stringile t�he
- String ajutineRev = reverse(ajutine); //V�tame ajutise stringi tagurpidi
- // Kui leiti sobiv s�na
- // ehk kui mumbajumba tagurpidi(alustades leidmata osadest)
- // algab hetke lause tagurpidi osaga
- if (mumbajumbaRev.startsWith(ajutineRev,nihe)) {
- ArrayList<String> s�nad = new ArrayList<String>();
- // Kui sobib, j�tame meelde kui parima sobiva ning uurime siiski edasi
- // kas veel pikemat sobivat ei tule
- s�nad.add(ajutine);
- int leitudS�naPikkus = ajutine.length();
- //System.out.println(nihe);
- int k�esOlevateS�nadePikkus = leitudS�naPikkus+nihe;
- //Kui terve lause pole veel k�es
- //System.out.println("k�esOlevateS�nadePikkus: "+k�esOlevateS�nadePikkus);
- //System.out.println("lause.length(): "+lause.length());
- if (k�esOlevateS�nadePikkus < lause.length()) {
- //System.out.println("jah");
- addToArrayList(s�nad,leiaJ�rgmineS�na(k�esOlevateS�nadePikkus));
- } else {
- //System.out.println("ei");
- }
- // Kui on esimene versioon s�nadest v�i
- // leitud s�nu on rohkem kui 0 ning v�hem kui ennem
- if ((v�himS�nad.size() == 0) || (s�nad.size() > 0 && s�nad.size() < v�himS�nad.size())) {
- v�himS�nad = s�nad;
- //s�nad = null;
- }
- }
- }
- //System.out.println("Tagastan "+v�himS�nad.size()+" s�na.");
- return v�himS�nad;
- }
- /**
- *
- * @param arrayList1 ArrayList, kuhu lisatakse
- * @param arrayList2 ArrayList, mille elemendid lisatakse
- * @return ArrayListi, kus on m�lemad koos
- */
- public static ArrayList<String> addToArrayList(ArrayList<String> arrayList1, ArrayList<String> arrayList2) {
- //Lisa iga teise arrayListi item esimesse
- for (String item : arrayList2) {
- arrayList1.add(item);
- }
- return arrayList1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement