This article mainly describes how to use PHP to calculate the distance between strings, has a certain reference value, now share to everyone, the need for friends can refer to
First, summary
A short summary: The best way to solve DP problem is: To analyze the state after the instance + Draw table.
1. What is the best way to solve DP problems?
Analysis of the state after the instance + Draw table
2. What are the benefits of drawing?
Drawing out the table after the programming is not easy to make mistakes, because with reference, you can follow the reference to write code
Second, calculate the distance of the string
Title Description
Levenshtein distance, also known as the editing distance, refers to the minimum number of edit operations required between two strings, converted from one to another. Permission edits include replacing one character with another character, inserting a character, and deleting a character. The algorithm of editing distance is first put forward by Russian scientist Levenshtein, so it is called Levenshtein Distance.
Ex:
String A:ABCDEFG
String B:abcdef
Achieve the goal by adding or deleting the character "G". Both of these scenarios require one operation. Define the number of times required for this operation as a distance of two strings.
Requirements:
Given any two strings, write an algorithm to calculate their editing distance.
Please implement the following interface
/* function: Calculates the distance of two strings * input: String A and string b * output: None * return: If the distance of the string is calculated successfully, the return 1 */public static int Calstringdistance (String CharA, String Charb) { return 0; }
Input Description:
Enter two strings
Output Description:
Get calculated results
Example 1
Input
Abcdefgabcdef
Output
1
2. Code (wrong code)
<?php/*1, this is a DP of the topic 2, but also is a linear dp3, F (i) (j) How to get F (i) (j) 4, DP is the brush table, here is clearly brushed 2-dimensional table 5, F (i) (j) What is said: The first I and string 1 of the string 2 is the distance of J So eventually all is F (Len (str1)) (Len (STR2)) 6, state transition equation: If the last of the string 1 and the last character of the string 2 is equal, then f (i) (j) =f (i-1) (j-1), unequal, then f (i) (j) =min (F ( I-1) (j), F (i) (j-1)) 7, when you want to Chabudu, you can draw a table directly into Excel based on an instance, not error-prone and clear fast */while ($str 1=trim (fgets)) {$str STDIN (2=trim ( STDIN)); $len 1=strlen ($str 1); $len 2=strlen ($str 2); $DP =null; for ($i =0; $i <= $len 2; $i + +) {$DP []=array_fill (0,intval ($len 1) +1,0); } for ($i =0; $i <= $len 1; $i + +) {$DP [0][$i]= $i; } for ($i =0; $i <= $len 2; $i + +) {$DP [$i][0]= $i; } for ($i =1; $i <= $len 2; $i + +) {//Line for ($j =1; $j <= $len 1; $j + +) {//column//If str1[$i-1] found in str2:0-$j-1, $str 1_2=substr ($str 1,0, $j); if (Strpos ($str 1_2, $str 2[$i-1])!==false) {$DP [$i] [$j]= $dp [$i -1][$j-1]; }else{$DP [$i] [$j]=max ($DP [$i] [$j-1], $DP [$i -1][$j]); }}} echo $DP [$len 2][$len 1]. Php_eol; PrinT_r ($DP);}? >
The above is the whole content of this article, I hope that everyone's learning has helped, more relevant content please pay attention to topic.alibabacloud.com!