hallo zusammen
bei folgende Code bekomme ich nicht das richtige Ergebnis.Es soll die kürzeste Wörter ausgeben, aber das macht er nicht !
z.B hier System.out.println(getShortestWords("Dies ist so ein einfaches Beispiel"));
soll nur "so" ausgeben aber er gibt "ist" und "so" aus
bei folgende Code bekomme ich nicht das richtige Ergebnis.Es soll die kürzeste Wörter ausgeben, aber das macht er nicht !
z.B hier System.out.println(getShortestWords("Dies ist so ein einfaches Beispiel"));
soll nur "so" ausgeben aber er gibt "ist" und "so" aus
Java:
//
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by Clair on 12/19/2016.
*/
public class Recursiv1 {
public static void main(String[] args){
String string="das ist ein beispiel";
List<String> list=getShortestWords(string);
Object[] result= list.toArray();
System.out.println(Arrays.toString(result));
System.out.println(getShortestWords("Dies ist so ein einfaches Beispiel"));
System.out.println(getShortestWords(""));
}
private static List<String> getShortestWords(String string) {
String[] strs=string.split(" ");
return rec(strs,strs[0],1);
}
private static List<String> rec(String[] strs, String str,int index) {
List<String> st= new ArrayList<>();
if(index==strs.length)
return st;
if(str.length()>strs[index].length()) {
st.add(strs[index]);
st.addAll( rec(strs, strs[index], index + 1));
return st;
}
else if(str.length()<strs[index].length()){
List<String> stringList = rec(strs, str, index + 1);
if(stringList.size()>0 && stringList.iterator().next().length()<str.length())
return stringList;
else {
st.addAll(stringList);
return st;
}
}
else {
st.add(str);
st.addAll(rec(strs,strs[index],index+1));
return st;
}
}
}
Zuletzt bearbeitet: