字符串相似度算法

        public static void main(String[] args) {
            String address1 = "济南市历下区经十路69号12号楼1单元401号";
            String address2 = "济南市历下区经十路69号顺元街道12号楼1单元401号";

            int distance = levenshteinDistance(address1, address2);
            System.out.println("Levenshtein 距离: " + distance);  // Levenshtein 距离: 4

            if (distance <= 5) {
                System.out.println("地址近似相同");  
            } else {
                System.out.println("地址不同");
            }
        }

        // Levenshtein 距离算法
        public static int levenshteinDistance(String s1, String s2) {
            int[][] dp = new int[s1.length() + 1][s2.length() + 1];

            for (int i = 0; i <= s1.length(); i++) {
                for (int j = 0; j <= s2.length(); j++) {
                    if (i == 0) {
                        dp[i][j] = j;
                    } else if (j == 0) {
                        dp[i][j] = i;
                    } else {
                        dp[i][j] = Math.min(dp[i - 1][j - 1] + (s1.charAt(i - 1) == s2.charAt(j - 1) ? 0 : 1),
                                Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1));
                    }
                }
            }
            return dp[s1.length()][s2.length()];
        }

你可能感兴趣的:(java工具类,算法,java,开发语言)