我是java编程的新手。我正在研究程序,以生成给定长度的给定字符的所有可能组合。
例如,如果a = 3且b = 2则意味着将有3个字符,字长必须为2.
所以可能的组合将是aa,ab,ac,ba,bb,bc,ca,cb,cc。
我已经在java中编写了程序,但它遇到了一些问题,因为它会将之前的sting追加到新角色。 有人可以指导,这里有什么问题吗?
我的计划:
package com.practice.programs;
import java.util.ArrayList;
import java.util.List;
public class ProgramClass {
public static int getWords(int a, int b) {
int charCount = a, wordLength = b, halfCount = a / 2;
// Not sure whether one needs to declare this ugly array. :(
char[] charArray = { '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z' };
List<StringBuilder> uniqueWords = new ArrayList<>();
List<StringBuilder> newUniqueWords = new ArrayList<>();
/**
* lets start with formation of all combinations of words.
* I know this is ugly approach. :(
*/
for(int i=0;i<wordLength;i++){
if(uniqueWords.size()!=0){
for(int k=0;k< uniqueWords.size();k++){
for(int j=0;j<charCount;j++){
StringBuilder tempWord = uniqueWords.get(k);
tempWord.append(String.valueOf(charArray[j+1]));
System.out.println(tempWord);
newUniqueWords.add(tempWord);
}
}
uniqueWords.clear();
uniqueWords = newUniqueWords;
newUniqueWords.clear();
}
else{
for(int j=0;j<charCount;j++){
uniqueWords.add(new StringBuilder(String.valueOf(charArray[j+1])));
}
}
}
// print all combinations of words
for (StringBuilder stringBuilder : uniqueWords) {
System.out.println(stringBuilder.toString());
}
return uniqueWords.size();
}
public static void main(String args[]) {
int a = 3, b = 2;
System.out.println(getWords(a, b));
}
}
将输出打印为
aa
aab
aabc
ba
bab
babc
ca
cab
cabc
0
请在这里帮忙。