1、随机输入手机上的数字,使字母组成不同的组合
public class base01 {
private String letterMap[][] = {
{}, //0
{}, //1
{"a","b","c"}, //2
{"d","e","f"}, //3
{"g","h","i"}, //4
{"j","k","l"}, //5
{"m","n","o"}, //6
{"p","q","r","s"}, //7
{"t","u","v"}, //8
{"w","x","y","z"} //9
};
private List<String> res = new LinkedList();
private List<String> letters = new LinkedList<>();
private String returnStr = "";
public String letterCombinations(String str){
String[][] choseData = new String[str.length()][4];
//选择取值范围
int reqInt = Integer.parseInt(str);
for(int i= 0; i< str.length();i++){
int sit = str.charAt(i) - '0';
choseData[i] = letterMap[sit];
}
//计算变化,不同长度也可以
for(int i = 1;i<= str.length();i++){
letterChange(choseData,i,0,"");
}
for(String strList : letters){
returnStr += strList + ",";
}
return returnStr;
}
private void letterChange(String[][] choseData,int num,int index,String returnStr){
if(num <= 0 || index >= choseData.length){
if(num > 0 && num == returnStr.length()){
letters.add(returnStr);
}
return;
}
//当前位置不要
letterChange(choseData,num,index + 1,returnStr);
//当前位置选一个数
String[] data = choseData[index];
for(String str : data){
if(str.length() > 0){
letterChange(choseData,num,index + 1, returnStr + str);
}
}
}
/**
* 随机输入手机上的数字,使字母组成不同的组合
* @param args
*/
public static void main(String[] args) {
System.out.println(new base01().letterCombinations("98765"));
}
}
2、不重复的整数数组,有多少种不同的排列组合
public class Solution {
private ArrayList<List<Integer>> res = new ArrayList<>();
private void permute(int[] nums,int index,List<Integer> list){
int num = nums.length;
if(num <= 0 || index >= num){