給定乙個包含[0,9]中數字的整數陣列,任務是列印所有可能的字母
數字可以表示的組合,數字到字母的對映(就像在**按鈕上)正在被跟蹤,注意0和1不對映到任何字母。所有對映如下圖所示:
寫乙個程式把0到9的數字轉換成字母,且程式需要支援將0到99的數字轉換成字母。
例如:
input:arr =
output: dg dh di eg eh ei fg fh fi
input: arr =
output: a b c
初始化資料
使用hashmap來儲存數字和字母的對映關係,其中數字作為key,字母作為value,因為乙個數字對應了多個字母,且每個數字對應的字母個數又不盡相同,所以這裡的value使用list集合來進行存放。**如下:
public static void initdigitsmap()
數字轉換為字母
首先從使用者鍵盤中輸入一串數字,且這組數字必須在0-99的範圍內,這裡可以通過while迴圈和正規表示式判斷來保證使用者輸入內容的合法性,將使用者輸入的數字進行切割,得到乙個只包含0-9的陣列,在迴圈中將每個陣列元素作為key從hashmap資料中查詢出該數字對映的字母集合,之後再次將這些集合新增到乙個嶄新的list集合中,且該集合元素型別為string陣列,這樣就能把每個數字對應的字母集合放入到string陣列中,然後將其作為資料來源傳遞給遞迴方法中,進行多陣列排列組合操作,返回乙個最終排列結果的list集合,最後直接遍歷該集合列印資料即可。**如下:
public static void digitstoletters()"))else
}stringbuilder arrinput=new stringbuilder("input:arr =
}//遞迴實現多陣列排列組合,並返回最終的排列集合
listresultlist= makeupletters(datalist,0,null);
//列印輸入內容
system.out.println(arrinput.tostring());
system.out.print("output:");
//列印輸出排列組合結果
for(int i=0;i遞迴實現多陣列排列組合
在遞迴方法中,我們需要傳入需要包含多陣列的資料來源集合,當前遞迴的陣列在集合中的索引位置以及返回的排列結果集合,在方法中對陣列進行遍歷,通過複製陣列進入擴容和增加新元素,並新增到結果集合中,然後再次遞迴呼叫自身方法,每遞迴一次集合索引位置加1,直到遍歷完最後乙個陣列才返回最終的排列結果集合。**如下:
private static listmakeupletters(listdatalist, int index, listresultlist)
listresultlist0=new arraylist();
if(index==0));
}}else}}
return makeupletters(datalist,++index,resultlist0);
}
把純數字轉換成大寫的數字
把數字轉成大寫的數字 function imgcount num 驗證輸入的字元是否為數字 if isnan num 字元處理完畢後開始轉換,採用前後兩部分分別轉換 小數點為界限 part string num split 初始化乙個字串 newchar 小數點前進行轉化 for i part 0 ...
前端練習03 把數字轉換成中文
完成將tochinesenum,可以將數字轉換成中文大寫的表示,處理到萬級別,例如tochinesenum 12345 返回一萬二千三百四十五。將數字按照四位分成一組,存放在輸入中,每一項的處理邏輯其實是相同的,無非是根據最後不同的位置,新增不同的單位即可 分組的過程涉及到了上乙個聯絡的內容,將陣列...
把字串轉換成數字
寫乙個函式,實現把字串轉換成正數這個功能,不能使用atoi或者其他類似的庫函式。首先,該函式會根據需要丟棄無用的開頭空格字元,直至尋找到第乙個非空字元的字元為止。當我們尋找到的第乙個非空字元為正號或者負號時,則將該符號與之後盡可能多的連續數字組合起來,作為該正數的正負號,假如第乙個非空字元是數字,則...