从标准输入读入一个由字母构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求全部的取法。
取出的字符,要求按字母升序排列成一个串。
不一样的取法输出顺序能够不考虑。
例如:
输入:
abc
则输出:
abc
输入:
abcd
则输出:
abc
abd
acd
bcd
输入:
abcaa
则输出:
abc
java
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(); } }