Java获取两个字符串的相似度

Java获取两个字符串的相似度

public static double getStringSimilarity(String sourceString, String targetString) {
        int[][] matrix;
        int sourceStringLength = sourceString.length();
        int targetStringLength = targetString.length();
        int indexOfSourceString;
        int indexOfTargetString;
        char charOfSourceString;
        char charOfTargetString;
        int temp;

        if (sourceStringLength == 0 || targetStringLength == 0) return 0;

        matrix = new int[sourceStringLength + 1][targetStringLength + 1];
        for (indexOfSourceString = 0; indexOfSourceString <= sourceStringLength; indexOfSourceString++) {
            matrix[indexOfSourceString][0] = indexOfSourceString;
        }
        for (indexOfTargetString = 0; indexOfTargetString <= targetStringLength; indexOfTargetString++) {
            matrix[0][indexOfTargetString] = indexOfTargetString;
        }

        for (indexOfSourceString = 1; indexOfSourceString <= sourceStringLength; indexOfSourceString++) {
            charOfSourceString = sourceString.charAt(indexOfSourceString - 1);
            for (indexOfTargetString = 1; indexOfTargetString <= targetStringLength; indexOfTargetString++) {
                charOfTargetString = targetString.charAt(indexOfTargetString - 1);
                if (charOfSourceString == charOfTargetString || charOfSourceString == charOfTargetString + 32 || charOfSourceString + 32 == charOfTargetString) {
                    temp = 0;
                } else temp = 1;
                matrix[indexOfSourceString][indexOfTargetString] = Math.min(Math.min(matrix[indexOfSourceString - 1][indexOfTargetString] + 1, matrix[indexOfSourceString][indexOfTargetString - 1] + 1), matrix[indexOfSourceString - 1][indexOfTargetString - 1] + temp);
            }
        }
        return (1 - (double) matrix[sourceStringLength][targetStringLength] / Math.max(sourceString.length(), targetString.length())) * 100F;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值