从标准输入读入一个由字母构成的串(不大于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
相关文章推荐
- 不同的取法输出顺序可以不考虑。取字符( 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。)
- 从键盘输入一个由字母构成的字符串(不大于30个字符),要求从该串中取出3个不重复的字符,求所有不同的取法。如果字符串中没有取到3个不同的字符,则提示没有结果。对取出的字符要求按字母升序排列成串,对于不
- 串中取3个不重复字母 从标准输入读入一个由字母构成的串(不大于30个字符)。 从该串中取出3个不重复的字符,求所有的取法。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
- 编写一个程序,从标准输入读入字符,并把它们写出在标准输出中。 所有非字母字符都完全按照它的输入形式输出,字母字符在输出前进行加密
- ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- 从键盘输入一批字符(以@结束),按要求加密并输出。加密规则为:1.所有字母均转化为小写;2.若是a到y,则转化为下一个字母;3.若是z,则转化为a;4.其他字符保持不变
- 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2<=n<=79
- 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人
- 编写一个程序,从标准输入读取字符,并把它们写到标准输出中。除了大写字母字符要转化为小写字母之外,所有字符的输出形式应该和他的输入形式完全相同
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- 0901假设存在一个可以从标准输入读入字母并且将其从小写转换为大写输出的可执行程序upcase
- 对输入的字符串按字典顺序输出所有的全排列,字符串可以由重复字符
- 蓝桥杯 取字母组成串 * A B C D中取5次,每个字母都可以重复取出,形成一个串。 现在要求,串中A出现的次数必须为偶数(0次也算偶数)。 求可以形成多少种可能的串。
- 【c语言】编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出
- 输出一个字符串所有排列。注意有重复字符
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 已知一个有重复字符的字符串,打印其所有不同的字符排列