演算法題 解碼字母到整數對映(C語言版)

2021-10-02 01:35:42 字數 1096 閱讀 1244

給你乙個字串 s,它由數字(『0』 - 『9』)和 『#』 組成。我們希望按下述規則將 s 對映為一些小寫英文本元:

字元(『a』 - 『i』)分別用(『1』 - 『9』)表示。

字元(『j』 - 『z』)分別用(『10#』 - 『26#』)表示。

返回對映之後形成的新字串。

題目資料保證對映始終唯一。

要求將數字轉換成字母,因此聯想到使用ascii碼進行轉換,首先我們要了解ascii碼怎麼用:

比如我們的ascii碼 a 對應的是數值是 97 ,那麼在記憶體裡面,就是存放的是 97 的二進位制。當你把 97 當作資料時,那麼它就是 97;如果你把它當作字元,那麼計算機就會呼叫計算機圖形學的程式設計,將 a 的圖形繪製到螢幕上,舉個**例子:

#include

intmain()

控制台輸出:

題目中給出的a到i用1到9表示,j到z用』10#』 - '26#'表示,既然如此,那麼我就用這些混淆視聽的數字湊出ascii碼的數值,以此得到相應的字母。

附上所用到字母的ascii碼:

通過例項一可知,可以從判斷陣列s的第三個元素入手,若為『#』,則將其之前的兩位數作為乙個數字進行計算,並且指標每次往後移動兩位數字,繼續進行判斷;否則,每次移動一位數字,並且將這一位數作為乙個數字進行計算ascii碼值。

另外記錄一下,if(a&&b)與if(b&&a)的不同,執行順序從左向右,因此第一次執行時誤將if(i+2』#』)搞反了,先判斷了s[i+2]』#'導致i值超出範圍的報錯。

附上**:

char

*freqalphabets

(char

* s)

else

dict[dictsize++

]=num+

'a'-1;

}return dict;

}

1309 解碼字母到整數對映

給你乙個字串 s,它由數字 0 9 和 組成。我們希望按下述規則將 s 對映為一些小寫英文本元 字元 a i 分別用 1 9 表示。字元 j z 分別用 10 26 表示。返回對映之後形成的新字串。題目資料保證對映始終唯一。示例 1 輸入 s 10 11 12 輸出 jkab 解釋 j 10 k 1...

1309 解碼字母到整數對映

給你乙個字串 s,它由數字 0 9 和 組成。我們希望按下述規則將 s 對映為一些小寫英文本元 字元 a i 分別用 1 9 表示。字元 j z 分別用 10 26 表示。返回對映之後形成的新字串。題目資料保證對映始終唯一。示例 1 輸入 s 10 11 12 輸出 jkab 解釋 j 10 k 1...

字串 1309 解碼字母到整數對映

題目 給你乙個字串 s,它由數字 0 9 和 組成。我們希望按下述規則將 s 對映為一些小寫英文本元 字元 a i 分別用 1 9 表示。字元 j z 分別用 10 26 表示。返回對映之後形成的新字串。題目資料保證對映始終唯一。示例 1 輸入 s 10 11 12 輸出 jkab 解釋 j 10 ...