从标准输入读入一个由字母构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字母升序排列成一个串。
不同的取法输出顺序可以不考虑。
例如:
输入:
abc
则输出:
abc
输入:
abcd
则输出:
abc
abd
acd
bcd
输入:
abcaa
则输出:
abc
import java.util.Scanner;
import java.util.Vector;
public class 三个不重复数 {
/**
* @param args
*/
private static Scanner in = new Scanner(System.in);
private static String str = null;
private static StringBuilder str_b = new StringBuilder();
private static StringBuilder str_b1 = new StringBuilder();
public static void input(){
str = in.nextLine();
}
public static void process(){
str_b.append(str.charAt(0));
for(int i=1;i<str.length();i++){
int j=0;
char c = str.charAt(i);
for(j=0;j<str_b.length();j++){
if(c==str_b.charAt(j))
break;
}
if(j==str_b.length())
str_b.append(c);
}
for(int k=0;k<str_b.length()-2;k++){
for(int m=k+1;m<str_b.length()-1;m++){
for(int n=m+1;n<str_b.length();n++){
str_b1.append(str_b.charAt(k)).append(str_b.charAt(m)).append(str_b.charAt(n));
printString(str_b1);
str_b1.delete(0,str_b1.length());
}
}
}
}
public static void printString(StringBuilder str){
int min = 0;
for(int i=1;i<3;i++){
if(str.charAt(i)<str.charAt(min))
min=i;
}
char c = str.charAt(0);
str.setCharAt(0, str.charAt(min));
str.setCharAt(min,c);
if(str.charAt(1)>str.charAt(2)){
c = str.charAt(1);
str.setCharAt(1, str.charAt(2));
str.setCharAt(2,c);
}
System.out.println(str.toString());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
input();
process();
}
}