rel*_*lyt 4 java sorting arraylist
我试图找到字符串的所有排列并按字母顺序排序.
这是我到目前为止:
public class permutations {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.print("Enter String: ");
String chars = s.next();
findPerms("", chars);
}
public static void findPerms(String mystr, String chars) {
List<String> permsList = new ArrayList<String>();
if (chars.length() <= 1)
permsList.add(mystr + chars);
//System.out.print(mystr + chars + " ");
else
for (int i = 0; i < chars.length(); i++) {
String newString = chars.substring(0, i) + chars.substring(i + 1);
findPerms(mystr + chars.charAt(i), newString);
}
Collections.sort(permsList);
for(int i=0; i<permsList.size(); i++) {
System.out.print(permsList.get(i) + " ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我输入一个字符串"玩具",我得到:
玩具tosy tyos tyso tsoy tsyo otys otsy oyts oyst osty osyt ytos ytso yots yost ysto ysot stoy styo soty soyt syto syot
我究竟做错了什么.我怎样才能按字母顺序排列它们?谢谢!
您正在从递归方法中调用您的排序例程,该方法在完全填充之前查找String的所有排列.
import java.util.*;
public class permutations {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.print("Enter String: ");
String chars = s.next();
List<String> myList = new ArrayList<String>();
findPerms(myList, "", chars);
Collections.sort(myList);
for(int i=0; i<myList.size(); i++) {
System.out.print(myList.get(i) + " ");
}
}
public static void findPerms(List<String> permsList, String mystr, String chars) {
if (chars.length() <= 1)
permsList.add(mystr + chars);
else
for (int i = 0; i < chars.length(); i++) {
String newString = chars.substring(0, i) + chars.substring(i + 1);
findPerms(permsList, mystr + chars.charAt(i), newString);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23677 次 |
最近记录: |