【发布时间】:2020-07-15 05:09:48
【问题描述】:
关于“查找字符串的排列”有几十个问题,但他们所有的答案都是打印排列。我想创建一个方法,它接受一个输入字符串并返回一个包含所有排列的列表。
这是我的代码:
public static List<String> allPerms(String str){
List<String> results = new ArrayList<>();
while(!allPerms("", str).equals("")) {
results.add(allPerms("", str));
}
return results;
}
private static String allPerms(String perm, String word) {
if(word.length() == 0)
return perm;
for(int i = 0; i < word.length(); i++) {
String small = allPerms(perm + word.charAt(i), word.substring(0, i) + word.substring(i + 1));
return small;
}
}
但这给了我一个错误,说我的私有方法的 for 循环是死代码。有人可以告诉我我在这里做错了什么吗?
【问题讨论】:
-
一方面,您在循环完成之前返回——只要循环中的第一个
allPerms完成,您就从循环中返回。这使得循环变得不必要。 -
您应该查看的第一个问题是,您的方法无法编译,因为在所有情况下它都不会返回 String。当你的 for 循环结束时会发生什么?