字符排序 蓝桥杯真题
来源:互联网 发布:新版yy语音软件下载 编辑:程序博客网 时间:2024/09/21 06:19
算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
packageQuestion1_9;importjava.util.Scanner;importjava.util.Vector;publicclass Question1 { public static long count=0; private void fullPermutation(Vector<Character>sourse,Vector<Character> result) { if(sourse.size()==0){ for (int i = 0; i< result.size(); i++) { System.out.print(result.elementAt(i)); } System.out.print("\n"); count++; return; } for (int i= 0; i < sourse.size(); i++) { Vector<Character>tsourse=newVector<Character>(sourse); Vector<Character>tresult=newVector<Character>(result); tresult.add(sourse.elementAt(i)); tsourse.remove(i); newQuestion1().fullPermutation(tsourse, tresult); } } public static void main(String[] args){ Scanner scanner=newScanner(System.in); int n=scanner.nextInt(); Vector<Character>sourse=new Vector<Character>(); Vector<Character>result=new Vector<Character>(); for (int i = 0; i < n;i++) { sourse.add((char)('A'+i)); } newQuestion1().fullPermutation(sourse, result); System.out.println(Question1.count); }}
方法二:
importjava.util.ArrayList; importjava.util.Iterator; importjava.util.LinkedHashSet; importjava.util.List; importjava.util.Scanner; importjava.util.Set; publicclass Demo03 { // 去掉重复元素,放入lis public static void removeDuplicate(Strings,Set<Character> lis){ for(char x:s.toCharArray()){ lis.add(x); } } // 为方便操作 将 sets 转 lis public static voidconvert(List<Character> lis,Set<Character> sets){ Iterator<Character> iter =sets.iterator(); while(iter.hasNext()){ lis.add(iter.next()); } } // 检测符合条件的元素组合 public static voidcheck(Set<Character> sets){ List<Character> lis = newArrayList<Character>(); convert(lis,sets); // 为方便操作 将 sets 转 lis StringBuffer sb = newStringBuffer(); for(inti=0;i<lis.size()-2;i++){ for(intj=i+1;j+1<lis.size();j++){ // 向后添加两位,所以 j+1<lis.size() for(int k=j+1;k<lis.size();k++){ sb.append(lis.get(i)); sb.append(lis.get(j)); sb.append(lis.get(k)); System.out.println(sb); // 输出组合 sb.setLength(0); // 清空 } } } } public static void main(String[]args){ Scanner scan = newScanner(System.in); System.out.println("输入串(不大于30个字符)。"); String s = scan.nextLine(); Set<Character> sets = newLinkedHashSet<Character>(); removeDuplicate(s,sets); // 去掉重复元素,放入lis check(sets); // 检测符合条件的元素组合 } }
运行结果:
输入串(不大于30个字符)。
abcd
abc
abd
acd
bcd
1 0
- 字符排序 蓝桥杯真题
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 字符排序
- 冒泡排序,排序字符
- 字符排序程序
- ViewPager--页面引导界面
- 拉普拉斯变换的物理意义是什么?
- T511K表之工资常量SIINS的用途
- [IOS 开发] 推送通知
- 杭电1066
- 字符排序 蓝桥杯真题
- CSS代码编码规范
- 清除浮动比较好用的方法
- 杭电ACM2007平方和与立方和
- Android 打包 与 反编译
- LeetCode 5. Longest Palindromic Substring
- IOS 应用APPStore上传
- KD 之 成绩单合并
- Eclipse 插件大全 (持续更新)