您的位置:首页 > 其它

从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。不同的取法输出顺序可以不考虑。

2013-06-30 11:40 841 查看
/**
*
从标准输入读入一个由字母构成的串(不大于30个字符)。

从该串中取出3个不重复的字符,求所有的取法。

取出的字符,要求按字母升序排列成一个串。

不同的取法输出顺序可以不考虑。

例如:
输入:
abc
则输出:
abc

输入:
abcd
则输出:
abc
abd
acd
bcd

输入:
abcaa
则输出:
abc

*/

import java.util.ArrayList;

import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class 取字符 {
static  List<List> resultList = new ArrayList<List>();
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
char[] c = s.toCharArray();
List list = new ArrayList();
for(int i = 0;i<3;i++){
list.add('0');
}
//System.out.println(list.size() + "list.size()");
findChar(c,list,3);

}

private static void findChar(char[] c, List list,int n) {
//System.out.println(c[0]);
if(n<=0){
if(check(list)){
StringBuffer sb = new StringBuffer();
for(int i = 0;i<list.size();i++){
sb.append(list.get(i));
}
System.out.println(sb.toString());
}
return ;
}
for(int i = 0;i<c.length;i++){
if(!list.contains(c[i])){
list.set(list.size()-n, c[i]);
}else{
continue;
}

findChar(c, list, n-1);
list.set(list.size()-n, '0');
}

}

private static boolean check(List list) {
//System.out.println(list.toString());
boolean b = true ;
List list1 = new ArrayList();
for(int i = 0;i<list.size();i++){
list1.add(list.get(i));
}
Collections.sort(list1);
for(int i  = 0;i<resultList.size();i++){
if(resultList.get(i).equals(list1)){
b =  false;
break;
}
}
resultList.add(list1);
return b;
}

}
运行结果:
abcccd
abc
abd
acd
bcd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐