给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

    分析:本题同样要求 所有 能表示的组合,那么就是要遍历所有情况,就要使用回溯算法
    首先根据题目中所给图片,设计出数字与字母的映射关系,在逐一回溯与递归,即可完成本题

    参考代码:
    public List letterCombinations(String digits) {
    if (digits.length()==0) return ret;
    String[] alpha = new String[]{“”,””,”abc”,”def”,”ghi”,”jkl”,”mno”,”pqrs”,”tuv”,”wxyz”};
    sup(digits,0,alpha);
    return ret;
    }
    List ret= new ArrayList<>();
    StringBuilder path = new StringBuilder();
    private void sup(String digits,int index,String[] alpha){
    if(index==digits.length()){
    ret.add(path.toString());
    return;
    }
    //str为要遍历的字符串,例如数字2对应的“abc”,数字3对应的“def”等,在回溯递归中,要注意是每个数字只取一个
    String str=alpha[digits.charAt(index)-‘0’];
    for(int i=0;i path.append(str.charAt(i));
    sup(digits,index+1,alpha);
    path.deleteCharAt(path.length()-1);
    }
    }