日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】

發(fā)布時間:2025/3/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編輯距離算法其實就是,在規(guī)定的編輯操作(替換字符串、插入字符串、刪除字符串)中,經過幾步可以把一個字符串變成另一個字符串,而這個所需的步數就是你的編輯距離。

測試樣例:

str1 = abc

str2 = yabd

表里的每一個值都代表著將str1轉換成str2所需要的步數,每個單元格的值都遵循這樣一個規(guī)律,第一行和第一列都是從0到n;其他的值要分情況計算,行索引和列索引對比大小,相同的話直接取左上方單元格的值,不同的話對比其左上方、左邊、上邊,找到三個單元格之中的最小值再加1即這個單元格的值。

str1abc
str2
0123
y1123
a2123
b3212
d4332

最后一個單元格的值就是兩個字符串間不同字符的個數,利用這個數與兩個字符串中最長的長度相除就得到了不相似的程度,再用1減去就是相似率。

public class FileCompared {public static void main(String[] args) {String str1 = "ABCDEFGZ";String str2 = "ABFDFEGXY";System.out.println("兩個字符串的相似率為:" + similarRates(str1,str2) +"%");}//定義一個similarRates方法獲取兩個字符串間不同字符的個數并求出兩個字符串的相似率public static int similarRates(String str1 , String str2){//確定二維距離表distance的維度int str1Len = str1.length();int str2Len = str2.length();//如果一個字符串的內容為空就返回另一個字符串的長度if (str1Len == 0) return str2Len;if (str2Len == 0) return str1Len;//定義一張二維距離表distanceint[][] distance = new int[str1Len + 1][str2Len + 1];//給二維數組的第一行第一列賦值int maxLen = str1Len > str2Len ? str1Len : str2Len;for (int num = 0; num < maxLen + 1; num++){if (num<str1Len + 1) distance[num][0] = num;if (num<str2Len + 1) distance[0][num] = num;}/*** 補全二維數組除第一行第一列的其他值* 行列索引進行對比,相同的話直接取左上方值,不同的話采用最小距離算法*/for (int row = 1; row < str1Len+1; row++){char c1 = str1.charAt(row - 1);for (int col = 1; col < str2Len+1; col++){char c2 = str2.charAt(col - 1);if (c1 == c2) {distance[row][col] = distance[row - 1][col - 1];} else {// 最小距離算法就是,取該元素左上方值、左邊值、上邊值,找到三個之中的最小值再加1即最終距離distance[row][col] = mostMin(distance[row-1][col], distance[row][col-1], distance[row-1][col-1]) + 1;}}}//二維數組中的最后一個元素即是兩個字符串間不同字符的個數int notSimilarNum = distance[str1Len][str2Len];//求出相似率double similarRates = (1- (double)notSimilarNum / maxLen)*100;return (int)similarRates;}//取三個數中的最小值public static int mostMin(int up, int left, int upLeft){int min = up < left ? up : left;min = min < upLeft ? min : upLeft;return min;} }

如此便求出了兩個字符串的相似率,字符串換成讀取文件的話就可以得到兩個文件的相似度。

總結

以上是生活随笔為你收集整理的java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文av免费观看 | 99情趣网| 91精品国产手机 | 欧美日韩麻豆 | 欧美做爰爽爽爽爽爽爽 | 亚洲精品国产精品乱码不99 | 在线播放91灌醉迷j高跟美女 | 亚洲欧洲激情 | 大地资源在线观看免费高清版粤语 | 国内精品视频在线观看 | 黄色网址在线免费播放 | 日韩精品四区 | 国产午夜福利在线播放 | 亚洲成人免费看 | 色戒电影未测减除版 | 爱操影院 | 伊人一区二区三区 | 大白屁股一区二区视频 | 亚洲自拍偷拍av | 91免费毛片 | 亚洲精品a区 | 亚洲污片| 绯色av一区| 中文字幕日韩有码 | 天天射网 | 午夜大片网 | 欧美美女在线观看 | 女攻总攻大胸奶汁(高h) | 成人av手机在线观看 | 欧美精品免费看 | 三级欧美视频 | 一级黄色在线 | 师生出轨h灌满了1v1 | 国产伦精品一区 | 黑人巨大精品欧美 | 丝袜制服一区 | 五月天色视频 | 原神淫辱系列同人h | 中文字幕国产剧情 | 国内自拍欧美 | 精品在线小视频 | 老熟妇一区二区 | 91精品一区二区 | 91欧美日韩国产 | 青青草福利 | 色欲av无码一区二区三区 | 黄页免费视频 | 成人免费黄色网址 | japanese中文字幕 | 无罩大乳的熟妇正在播放 | 日韩乱码一区二区 | 色狠狠久久av大岛优香 | 国产91丝袜在线观看 | 免费伊人网| 日本韩国欧美 | 姐姐你真棒插曲快来救救我电影 | 成人激情小视频 | av免费的 | 在线免费观看av的网站 | 五月婷婷亚洲综合 | 挪威xxxx性hd极品 | 日韩在线影视 | 亚洲欧美色图视频 | 国产精品久久久久无码av色戒 | 久久成人a毛片免费观看网站 | 岛国精品资源网站 | 免费欧美一级视频 | 波多野结衣91 | 欧美黄色aaa | 18禁裸乳无遮挡啪啪无码免费 | 国产经典三级 | 青草热视频 | 女生被男生桶 | 怡红院综合网 | 91精品国产色综合久久不卡电影 | 欧美日韩一卡二卡三卡 | 九九热色| 日韩国产精品久久 | 青娱乐在线播放 | mm1313亚洲国产精品无码试看 | 欧洲女性下面有没有毛发 | 狠狠插影院| 免费在线观看av网址 | 嫩草网站 | 国产精品一区二区在线看 | 天堂网wwww| 国产日皮视频 | 91日韩视频 | 日本午夜一区二区三区 | 色资源网站 | 国产亚洲毛片 | 国模人体一区二区 | 国产在线不卡一区 | 神马国产| av黄页| 久久精品国产欧美亚洲人人爽 | 天堂成人在线视频 | 自拍视频一区 | 97超级碰碰碰|