題目連結:
題目大意:
定義一種編碼,其為英文的26個字母組成。對於每一組相鄰的字母,左邊的字母之字典序會小於右邊的字母的字典序。因此,我們可以定義為以下:
a=1
b=2
……
z=26
ab=27
……
az=51
bc=52
……
vwxyz=83681
現給定一字串(長度不會超過 26 字元),先檢查是否為合法的編碼(例如 abb 就是一組不合法的例子)。如果不合法,就輸出「0」;反之,輸出其相對應的編號。
我們觀察一編碼為 bdfg :
因為前面已經經過了長度為 1 、 2 、 3 的編碼,所以我們可以得知其編號至少為
C26取1 + C26取2 + C26取3
且長度為 4 , a 開頭的經歷過了,所以還要加上
C25取3
接著是 bc 開頭的,要加上
C23取2
接著是 bde 開頭的,也要加上
C21取1
最後,再加上 bdfg 本身為 1。所以其編號為 5526 。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。