假設我有一個字母'abcd'和最大字符串長度爲3.這給我85 possible strings,包括空字符串。我想要做的是將範圍[0,85)內的整數映射到字符串空間中的字符串,而不使用查找表。事情是這樣的:將整數映射到給定字符串空間中的字符串
0 => ''
1 => 'a'
...
4 => 'd'
5 => 'aa'
6 => 'ab'
...
84 => 'ddd'
這是很簡單的做,如果字符串是使用此僞算法固定長度:
str = ''
for i in 0..maxLen do
str += alphabet[i % alphabet.length]
i /= alphabet.length
done
我想不通,雖然做的不錯的,有效的方法當字符串的長度可以在[0,3)範圍內的任何位置。這將在隨機輸入的緊密循環中運行,所以我想避免任何不必要的分支或查找。
您的掌握所涉及的數學顯然比我的要強很多,但這正是我所期待的;它完美地工作。非常感謝您的幫助。 – spencercw 2012-02-14 21:31:25