我要解决的问题是使用辅音和元音创建所有可能的单词,其中我有两个数组列表:
第一个 A = {a, e, i, o, u},
仅由元音组成。第二个 B = {b, c, d, f, g, h, j, k, l, m, n, p, q, r, t, v, x, y, w, z},
表现为辅音。
有了这两个,我需要使用辅音和元音生成所有可能的单词组合,例如:
01 - babebi, 02 - babebu ...
使用第三个数组,我需要使用以下数组列表在每个单词的末尾添加一个数值:C = {0,1,2,3,4,5,6,7}
,其中只能使用两种算法,例如:
< code>01 - babebi01,02 - babebi02,03 - babebi03...不重复数字,适用于所有单词。
为此,我有以下代码:
通过这种方法,我使用辅音和元音生成所有单词:
我生成所有对,辅音和元音。
private void getRandomPairs(Values obj) {
for (String vowel: obj.getVowels()) {
for (String consonat: obj.getConsonants()) {
pairsLetters.add(consonat + vowel);
}
}
}
然后将所有对保存在一个列表中,我生成所有单词。
private List<String> generateWord() {
for (int i = 0; i < pairsLetters.size(); ++i){
for (int j = 0; j < pairsLetters.size(); ++j){
if (pairsLetters.get(i).equals(pairsLetters.get(j))) continue;
for (int k = 0; k < pairsLetters.size(); ++k){
if ((pairsLetters.get(i).equals(pairsLetters.get(k))) || (pairsLetters.get(j).equals(pairsLetters.get(k)))) continue;
words.add(pairsLetters.get(i) + pairsLetters.get(j) + pairsLetters.get(k));
}
}
}
return words;
}
使用另一种方法,我使用两种算法生成所有可能的数字组合,而不会重复:
private void generateNumbersPairs(Values obj) {
for (int i = 0; i < obj.getNumbers().size(); ++i){
for (int j = 0; j < obj.getNumbers().size(); ++j){
if (obj.getNumbers().get(i).equals(obj.getNumbers().get(j))) continue;
pairNumbers.add(obj.getNumbers().get(j)+obj.getNumbers().get(i));
pairNumbers.add(obj.getNumbers().get(i)+obj.getNumbers().get(j));
}
}
}
完成后,使用此方法生成所有以数字结尾的单词组合:
生成单词
private void getAllWords (List <String> words, List <String> pairNumbers) {
for (int letter = 0; letter <6; ++ letter) {
for (int number = 0; number <pairNumbers.size (); ++ number) {
if (words.equals (pairNumbers.get (number))) continue;
saveNewWord (words, pairNumbers, number);
}
}
}
保存单词
private void saveNewWord (List <String> pairs, List <String> pairNumbers, int number) {
String word = String.join ("", words);
allWords.add (word + pairNumbers.get (number));
}
我的问题是,由于字数巨大,当我的方法经过' for '时,我不可能完成这样的计算,因为方法消耗的内存比我拥有的多。有什么方法可以改进这个算法吗?有人能帮我一下吗?
没有必要存储这些“单词”。
您有105个不同的音节,您可以将这些单词视为105个基数。根据您要执行的处理,您可以将音节编码为字节(然后,对于完整的枚举,每次“数字”超过104时,您都必须携带)或整数(并提供基本转换算法)。在这两种情况下,32位整数可以表示最多有四个音节的任何单词。
但同样,显式存储它们是没有用的。如果真的必须,请使用位数组。表示四个音节单词大约需要15.2 MB。
本文向大家介绍C语言获取消耗内存的方法,包括了C语言获取消耗内存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C语言获取消耗内存的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C语言程序设计有所帮助。
本文向大家介绍使用WindowsAPI获取录音音频的方法,包括了使用WindowsAPI获取录音音频的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例介绍了使用winmm.h进行音频流的获取的方法,具体步骤如下: 一、首先需要包含以下引用对象 二、音频的获取需要调用7个函数 1. waveInGetNumDevs:返回系统中就绪的波形声音输入设备的数量 2. waveInGetDevCaps
我试图找到一个单词中所有元音的所有可能组合。例如给定“你好”: 我编写了以下函数,它只接受每个元音,在每个元音处,它只会将其全部替换为元音并将每个版本添加到列表中。我正在尝试根据需要将其更改为排列,但它不起作用。我尝试在附加后插入元音(“”.join(string),arr),但这会导致无限递归。 有人有什么建议吗?
本文向大家介绍JavaScript获取表单内所有元素值的方法,包括了JavaScript获取表单内所有元素值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript获取表单内所有元素值的方法。分享给大家供大家参考。具体如下: 下面的JS代码可以遍历指定表单中的所有元素,并输出元素的值 希望本文所述对大家的javascript程序设计有所帮助。
我需要将给定字符串中的每个元音替换为同一个元音,后跟字母“v”,再跟上一次元音。例如:<code>bad</code>应该变为<code>bavad</code>,<code>egg</code>变为<code>evegg</code>,<code>doge</code>dovogeve</code>,等等。练习明确指出需要使用<code>String完成。join()方法。到目前为止,我已经想出
我做了一个程序来计算输入字符串中元音和辅音的数量: 当“y”本身是辅音时,它应该是元音。我在哪里陈述?