前言
短網(wǎng)址,我想大家應該都見過,如果沒有,試著點擊下面這條鏈接 https://git.io/vSY4o,會跳到我的 GitHub 主頁,但是它確實比原始鏈接 https://github.com/hanzichi 要短了一些。關于短網(wǎng)址的作用,這里不作描述,本文主要講講如何實現(xiàn)一個簡單的短網(wǎng)址系統(tǒng)。
Leetcode 正好 有一題 與此有關,不妨一試。
思路
如果沒有接觸過短網(wǎng)址,不妨去 https://goo.gl/ 和 https://git.io/ 稍微體驗下。體驗的結(jié)果是,短網(wǎng)址都把網(wǎng)址壓縮成了六個字符,這是巧合嗎?
短網(wǎng)址整個運轉(zhuǎn)邏輯非常簡單,我們以 https://goo.gl/SfzlA2 為例,當我們訪問這個網(wǎng)址的時候,后端可以獲取 "SfzlA2" 這個字符串,然后跳轉(zhuǎn)到 https://github.com/hanzichi,很顯然,這個字符串和這個地址已經(jīng)綁定,通過某種映射關系可以從 "SfzlA2" 獲取完整的地址。
那么,看起來我們只需要找到一個算法,能夠?qū)⒁粋€長字符串壓縮成一個短的字符串,并且該算法應該是可逆的。但是實現(xiàn)這樣的文本壓縮算法,是非常困難的(不存在?),如果真有這么一個算法和逆運算,那么基本上現(xiàn)在的壓縮軟件都可以歇菜了,而世界上所有的信息(網(wǎng)址長度未知),都可以壓縮成固定長度個