Custom levenshtein objective: to understand the levenshtein algorithm principle
Reference: http://www.cnblogs.com/ymind/archive/2012/03/27/fast-memory-efficient-Levenshtein-algorithm.html
- Function _ levenshtein ($ src, $ dst ){
- If (empty ($ src )){
- Return $ dst;
- }
- If (empty ($ dst )){
- Return $ src;
- }
- $ Temp = array ();
- For ($ I = 0; $ I <= strlen ($ src); $ I ++ ){
- $ Temp [$ I] [0] = $ I;
- }
- For ($ j = 0; $ j <= strlen ($ dst); $ j ++ ){
- $ Temp [0] [$ j] = $ j;
- }
- For ($ I = 1; $ I <= strlen ($ src); $ I ++ ){
- $ Src_ I = $ src {$ I-1 };
- For ($ j = 1; $ j <= strlen ($ dst); $ j ++ ){
- $ Dst_j = $ dst {$ j-1 };
- If ($ src_ I ==$ dst_j ){
- $ Cost = 0;
- } Else {
- $ Cost = 1;
- }
- $ Temp [$ I] [$ j] = min ($ temp [$ i-1] [$ j] + 1, $ temp [$ I] [$ j-1] + 1, $ temp [$ i-1] [$ j-1] + $ cost );
- }
- }
- Return $ temp [$ i-1] [$ j-1];
- }
- Echo _ levenshtein ("hello", "HElloo ");
|