我們可以使用動態規劃的方式來計算文字間距,通過建立dp陣列將對比文字的問題分成多個子問題:
文字間的間距通常包含以下三種情況:
insert: abc -> abdc
remove: abc -> ab
update: abc -> adc
我們只需要計算不同情況下最短間距就可以了,具體實現方式如下:
def text_distance(str1, str2):
m, n = len(str1), len(str2)
# 構建二維陣列來儲存子問題的答案
dp = [[0 for x in range(n+1)] for x in range(m+1)]
# 利用動態規劃演算法,填充陣列
for i in range(m+1):
for j in range(n+1):
# 假設第乙個字串為空,則轉換的代價為j(j次的插入)
if i == 0:
dp[i][j] = j
# 同樣,假設第二個字串為空,則轉換的代價為i(i次的插入)
elif j == 0:
dp[i][j] = i
# 如果最後乙個字元相等,就不會產生代價
elif str1[i-1] == str2[j-1]:
dp[i][j] = dp[i-1][j-1]
# 如果最後乙個字元不一樣,則考慮多種可能性,並且選擇其中的最小值
else:
dp[i][j] = 1 + min(dp[i][j-1], # insert
dp[i-1][j], # remove
dp[i-1][j-1]) # replace
return dp[m][n]
我們可以驗證一下
text_distance('go', 'going') # output:3
text_distance('whose', 'who') # output:2
text_distance('who', 'how') # output:2
CorelDRAW如何設定文字間距
文章介紹使用coreldraw設定文字字間距,提供四種調整文字字間距的方法 分別是段落面板 文字工具 選擇工具以及形狀工具,我們來逐一介紹下。文字行距調整方法一 段落面板泊塢窗 可精確調整 使用f8 文字工具 拖動滑鼠實現段落文字框,在框內單擊新增段落文字,屬性欄中單擊 文字屬性 按鈕,或者按下快捷...
oracle 計算時間間距
months between months between x,y 用於計算x和y之間有幾個月。如果x在日曆中比y早,那麼months between 就返回乙個負數。當x 和 y 之間的月份之差不是整月的時候,可以採用小數表示,例如 select months between 25 may 200...
iOS設定富文字行間距 字間距
我們在展示文字資訊時,經常會碰到換行自適應高度的文字,這時我們會發現換行之後,文字之間的行間距依然很小,導致看起來很擁擠,影響美觀。因此以下 就是來解決這些問題,新建乙個nsstring的類別,貼出如下 1 調整行間距,字間距 設定行間距和字間距 param string 字串 param line...