字符串组合数目的统计
来源:互联网 发布:mac flash有时不能用 编辑:程序博客网 时间:2024/04/24 03:54
分析:提取首字母,然后对首字母后面的字符进行递归操作即可。
我的代码:
import java.util.*;public class Permutation { public ArrayList<String> getPermutation(String A) { // write code here if(A==null){ return null; } ArrayList<String> per = new ArrayList<String>(); if(A.length()==0){ per.add(""); return per; } char first = A.charAt(0);//提取首字母 String remainer = A.substring(1);//提取首字母后面的字符串 ArrayList<String> words = getPermutation(remainer);//后面的字符串进行递归。 for(String word:words){//首字母各个位置插入 for(int i = 0;i<=word.length();i++){ String s = insertCharAt(word,first,i); per.add(s); } } Collections.sort(per);//升序排列 Collections.reverse(per);//反转 return per; } public String insertCharAt(String word,char c,int i ){//插入 String start = word.substring(0,i); String end = word.substring(i); return start+c+end; }}
代码下载:我的github
还有一个解法:
import java.util.*;public class Permutation { public ArrayList<String> getPermutation(String A) { // write code here ArrayList<String> list = new ArrayList<>(); permutation(list, A.toCharArray(), 0); Collections.sort(list); Collections.reverse(list); return list; } public void permutation(ArrayList<String> list, char[] array, int k) { if(k == array.length) { list.add(new String(array)); return ; } for(int i = k; i < array.length; i++) {//以首字母不同来分组 swap(array, i, k);//将k位置和i位置的字母交换 permutation(list, array, k + 1);//i字母后面的进行组合的获取 swap(array, i, k);//交换回来,维持稳定 } } public void swap(char[] array, int i, int j) { if(i != j) { char temp = array[i]; array[i] = array[j]; array[j] = temp; } }}
0 0
- 字符串组合数目的统计
- 【vim】统计某个字符串的数目
- 74.统计字符串中各原音字母的数目
- 统计字符串中字符种类的数目
- String(字符串)数目统计
- 统计字符串中的单词数目
- 统计字符串中的单词数目
- 统计1的数目
- 统计汉字的数目
- 计算组合数据的数目
- 统计字符串中的英文数字数目
- 题解:统计字符串中单词数目
- hdu 4552 字符串前缀数目统计
- 【python】统计文件中的字符串数目
- 统计单词数目的脚本
- 第十三周上机项目5--(3) 字符串中字符数目的统计
- 如何让用c语言统计字符串中小写字母,空格和其他字符的数目
- 28+打印并统计字符串的全排列和组合
- Sigslot - WebRTC中的事件处理机制
- SqlServer 中递归语法及例子
- Combination Sum
- Promise模式
- Android 多进程会多次初始化 Application
- 字符串组合数目的统计
- 最小生成树,次小生成树
- MyBatis 提高
- 快速找到ANDROID STUDIO制作的demo(APK)
- 理解C++重载、重写、虚函数
- Light OJ 1414 February 容斥
- 【java】多线程小例子-聊天
- 数据库基础知识
- 【知识分享】——内存栈、堆