String arrs={'D','S-X','D','S','C-Z','P'}
数组里的是“大厦的收藏品”的首字母,因为厦和藏都是多音字,现在要求把所有的首字母组合输出
如:DSDSCP DXDSZP DXDSCP DSDSZP,一时想不到实现方法
希望给点思路,能上代码更好。
[code="java"]
import java.util.LinkedList;
//采用广度优先遍历
public class BroadFirst {
//用于存储遍历情况的列表
private LinkedList<String> list=new LinkedList<String>();
//传入的参数
private String[][] para=null;
public BroadFirst(String[][] para){
this.para=para;
//将第一个列表添加到遍历列表的前端
for(String str:this.para[0]){
this.list.addLast(str);
}
//产生序列
this.createSequence();
}
private void createSequence() {
int innerLength = 1;
while (true) {
String temp = this.list.pollFirst();
innerLength = temp.length();
// 深度够了则执行完成
if (innerLength == para.length) {
this.list.addFirst(temp);
return;
} else {
for (String innerStr : this.para[innerLength]) {
// 依次入队列的末端
this.list.addLast(temp + innerStr);
}
}
}
}
public void printString(){
for(String str:this.list){
System.out.println(str);
}
}
//测试
public static void main(String[] args) {
String[][] temp={{"D"},{"S","X"},{"D"},{"S"},{"C","Z"},{"P"}};
BroadFirst bf=new BroadFirst(temp);
bf.printString();
}
}
[/code]
输出:
DSDSCP
DSDSZP
DXDSCP
DXDSZP
//看看这个能不能满足你的需要
你这个样例输入本身有问题啊,String arrs={'D','S-X','D','S','C-Z','P'}
这是个字符串嘛?
还是你想搞个 字符串数组?