输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
2017-09-02 15:17
736 查看
问:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> res = new ArrayList<String>();
if(str != null && str.length()>0){
PermutationHelper(str.toCharArray(),0,res);
//对字母进行排序
Collections.sort(res);
}
return res;
}
public void PermutationHelper(char[] cs ,int i,ArrayList list){
if(i == cs.length-1){
String val = String.valueOf(cs);
if(!list.contains(val)){
list.add(val);
}
}else{
for(int j=i;j<cs.length;++j){
//交换
swap(cs,i,j);
//将指标向前移动一格,让下一格与后面的交换
PermutationHelper(cs,i+1,list);
//复位
swap(cs,i,j);
}
}
}
public void swap(char[] cs,int i,int j){
char tmp = cs[i];
cs[i]=cs[j];
cs[j]=tmp;
}
}
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> res = new ArrayList<String>();
if(str != null && str.length()>0){
PermutationHelper(str.toCharArray(),0,res);
//对字母进行排序
Collections.sort(res);
}
return res;
}
public void PermutationHelper(char[] cs ,int i,ArrayList list){
if(i == cs.length-1){
String val = String.valueOf(cs);
if(!list.contains(val)){
list.add(val);
}
}else{
for(int j=i;j<cs.length;++j){
//交换
swap(cs,i,j);
//将指标向前移动一格,让下一格与后面的交换
PermutationHelper(cs,i+1,list);
//复位
swap(cs,i,j);
}
}
}
public void swap(char[] cs,int i,int j){
char tmp = cs[i];
cs[i]=cs[j];
cs[j]=tmp;
}
}
相关文章推荐
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
- 华为计算字符个数写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
- JS判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
- 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- js判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 一个字符串中可能包含a~z中的多个字符,如有重复,求出现次数最多的那个字母及次数,如有多个重复最多的则都输出。
- 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
- js判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写
- 完美字符串 输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。如dad 77
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- js脚本系列(1) JS判断输入字符串长度(汉字算两个字符,字母数字算一个)
- JS判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 一个字符串中可能包括a-z中的多个字符,如有重复,求出现最多次数的那个字符及次数,如有多个重复的则都求出
- 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。