允许重复的字符串的所有排列

时间:2018-01-25 03:47:29

标签: java string recursion permutation

这是我的递归解决方案,它返回一组字符串的所有排列。但是,此实现不允许任何重复。例如,对于输入字符串rs,它将仅输出{rs,sr},而在允许重复的情况下,正确的输出应为{rs,sr,rr,ss}。可以使用与下面相同的代码,通过一些小修改/添加来解决上述问题吗?

Set<String> findCombinations(String time){
    if(time.length() == 1){
        return new HashSet<>(Arrays.asList(time));
    }
    char firstChar = time.charAt(0);
    Set<String> combos = new HashSet<>();
    Set<String> currentCombo = findCombinations(time.substring(1));

    Iterator<String> iter = currentCombo.iterator();
    while(iter.hasNext()){
        String currentStr = iter.next();
        for(int i = 0; i <= currentStr.length(); i++){
            StringBuilder builder = new StringBuilder(currentStr);
            combos.add(builder.insert(i, firstChar).toString());
        }        
    } 
    return combos;
}

据我所知,还有其他帖子可以解决此问题。我正在寻找的是获得所需结果所需的上述代码的最小变化。

0 个答案:

没有答案