java小编程----电话号码组合
生活随笔
收集整理的這篇文章主要介紹了
java小编程----电话号码组合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
僅以此文深刻理解遞歸!!!?
package com.henu.lmd;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** 電話號碼的字母組合*/ public class Demo05_力扣17官網 {public static void main(String[] args) {String digits = "239";System.out.println(letterCombinations(digits));}public static List<String> letterCombinations(String digits) {if(digits.length()==0||digits==null) return new ArrayList<String>();Map<Integer,String> map = new HashMap<>();map.put(2,"abc");map.put(3,"def");map.put(4,"ghi");map.put(5,"jkl");map.put(6,"mno");map.put(7,"pqrs");map.put(8,"tuv");map.put(9,"wxyz");return letterCombinations(digits,map);}public static List<String> letterCombinations(String digits,Map<Integer,String> map){List<String> now = new ArrayList<>();//由下方的遞歸調用函數,區分字符串最后一個數字,就以239為例,當if執行,代表此時取得是字符串最后一位//即9然后將9對應的字母組合添到list集合now中。然后讓return它的上一層函數if(digits.length() == 1){String s = map.get(Integer.parseInt(digits));for(int i=0;i<s.length();i++){now.add(""+s.charAt(i));}System.out.println(now);return now;//從被調用函數返回到主調函數中繼續執行,并非一遇到return整個遞歸結束。}//遞歸調用letterCombinations例digits=239,則(39),(9)【注】每次調用從開頭運行//然后當(9)運行結束,返回now,此時執行(39),已知(39)上面代碼不成立,則執行一下代碼。//取map(3)賦給字符串head,然后兩個for循環將now重新賦值List<String> pre = letterCombinations(digits.substring(1),map);//此時調用map(2)。再賦值。再返回主調函數(239)執行完畢結束返回now。String head = map.get(Integer.parseInt(digits.substring(0,1)));for(String s : pre){for(int j=0;j<head.length();j++){now.add(head.charAt(j)+s);} } // System.out.println(now);return now;} }?
總結
以上是生活随笔為你收集整理的java小编程----电话号码组合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java小编程----四数之和
- 下一篇: 使用Math 类 和 Random类 两