当前位置: 首页 > 面试题库 >

给定一个长度和一组字符,如何获得所有可能的字符串组合

戚阳文
2023-03-14
问题内容

给定一个长度n=4, 和a set of characters -> {'a', 'b'},如何编写一些Java代码以产生长度为n的所有可能的字符串,其中包含集合中的字符?

对于上面的示例,结果应具有2 ^ 4 = 16个字符串,即:

aaaa
aaab
aabb
abbb
baaa
baab
babb
bbbb
bbaa
bbab
bbba
abaa
abab
abba
baba
aaba

这是我的代码段:

public void process(String result, String string)
{
    if(string.length() == 0)
    {
        System.out.println(result);
    }else{
        for(int i = 0; i < string.length(); i++)
        {
            String newResult = new String(result+string.charAt(i));
            String newString = new String(string.substring(0,i) + string.substring(i+1, string.length()));
            process(newResult, newString);
        }
    }
}

好像只是在做排列,而不是我想要的。……在此先谢谢您:)


问题答案:

以与计数相同的方式来考虑它。从技术上讲,您是从aaaa到bbbb进行“计数”,就像二进制一样。

aaaa -> 0000
aaab -> 0001
aaba -> 0010
aabb -> 0011
...
bbbb -> 1111

没有看到您尝试过的内容,我不能为您提供更多帮助,但是从本质上讲,您需要通过对它们进行计数来枚举“最低”元素和“最高”元素之间的所有“数字”。

对于较高的元素计数,只需将您的计数视为在较高的基数中计数即可。对于八个元素Set = {a,b,c,d,e,f,g,h},您将在本质上是八进制的计数:

aaaa -> 0000
aaab -> 0001
...
aaah -> 0007
aaba -> 0010
...
hhhh -> 7777

通过从0000到9999的计数,您可以枚举长度为4的0-9的所有组合。

编辑:

感谢您发布代码。您是正确的,您正在做排列。更好的方法是使用类似于此处讨论的多重组合(在有序组合集中具有重复元素的组合)算法。



 类似资料:
  • 给定一个字符串数组,单词,返回该数组,其中包含所有偶数长度的字符串,并将其替换为空字符串。 如何返回字符串?我需要返回字符串以便为偶数打印空白,但现在我只是返回一个计数。这是我的代码,我认为一切都是正确的,我只是不知道如何返回它?

  • 问题内容: 从最小和最大长度值的给定数组中获取所有可能的字符串组合的最佳算法是什么? 注意:这增加了复杂性,因为值是可变的,与链接到的问题不同。 例如: 问题答案: 几乎是基本转换 此解决方案是出于以下观察的目的:如果不是为了在有效组合的高位位置重复数组索引0处的字符,则此问题将只是从十进制到新的基数的基数转换。从0到(base ^ length)-1的所有整数。所以, 困难在于,它会错过与一个或

  • 本文向大家介绍PHP实现给定一列字符,生成指定长度的所有可能组合示例,包括了PHP实现给定一列字符,生成指定长度的所有可能组合示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现给定一列字符,生成指定长度的所有可能组合。分享给大家供大家参考,具体如下: 给定一列字符,生成指定长度的所有可能的组合: 如:a,b,c,d,e 或 0-9  生成长度 1:a, b, c, d, e;

  • 问题内容: 我有一个字符数组c [] [],每个索引都有不同的映射。例如: 我需要以字符串形式返回此数组的所有可能字符组合。也就是说,对于上述字符数组,我应该返回:“ ag”,“ ah”,“ ai”,“ bg”,“ bh”,“ bi”,“ cg”,“ ch”,“ ci”等对于上面只有两件事的字符数组,这样做很容易,但是如果有更多的数组,那么我不知道该怎么办…这就是我要大家提供的帮助!:) 问题答案

  • 我已经解决了寻找最长回文子字符串的问题,但这是不同的。给定一个像“ababa”这样的字符串,所有前缀的最长回文子字符串的长度如下所示- “a”:“a”(长度1) “ab”:“a”或“b”(长度1) “aba”:“aba”(长度3) “abab”:“aba”或“bab”(长度3) “亚贝巴”:“亚贝巴”(长度5) null null 我们只需要长度,而不是实际的回文。有没有更容易/更好(就运行时复杂

  • 问题内容: 我是Python的完整新手,但似乎给定的字符串可以(有效)为任意长度。也就是说,您可以加入并继续添加:。有没有办法制作这样的字符串数组? 当我尝试此操作时,每个元素仅存储一个字符 另一方面,我知道我可以初始化一定长度的字符串数组,即 最多可以存储10个字符串,最多256个字符。 问题答案: 您可以通过创建一个数组来实现。如果您尝试将长字符串分配给普通的numpy数组,则会截断该字符串: