常用工具类算法
“你不解决问题,你和问题同归于寂。解决了问题,你和问题都明了起来”
比较两个字符串的异同
算法解析
具体做法
-
分散<被比较>元素的序数到第一列被比较>
-
分散<比较>元素的序数到第一行比较>
-
逐行比较
-
比较规则: 比较左侧、上侧、左上角元素的大小,取最小值加1
-
返回对角线元素的值
算法验证
TODO
Code Example
org.springframework.beans.PropertyMatches.java
``` private static int calculateStringDistance(String s1, String s2) { if (s1.isEmpty()) { return s2.length(); } if (s2.isEmpty()) { return s1.length(); } int d[][] = new int[s1.length() + 1][s2.length() + 1];
for (int i = 0; i <= s1.length(); i++) {
d[i][0] = i;
}
for (int j = 0; j <= s2.length(); j++) {
d[0][j] = j;
}
for (int i = 1; i <= s1.length(); i++) {
char s_i = s1.charAt(i - 1);
for (int j = 1; j <= s2.length(); j++) {
int cost;
char t_j = s2.charAt(j - 1);
if (s_i == t_j) {
cost = 0;
}
else {
cost = 1;
}
d[i][j] = Math.min(Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1),
d[i - 1][j - 1] + cost);
}
}
return d[s1.length()][s2.length()];
}
```