이 글은 주로 PHP를 사용하여 문자열 사이의 거리를 계산하는 방법을 소개합니다. 특정 참조 값이 있습니다. 이제 도움이 필요한 친구들이 참고할 수 있습니다.
2. 드로잉의 장점은 무엇인가요?
2 문자열의 거리를 계산합니다.
예:
String A: abcdefg
String B: abcdef
문자 "g"를 추가하거나 삭제하면 목적이 달성됩니다. 두 옵션 모두 하나의 작업이 필요합니다. 이 작업에 필요한 횟수를 두 스트링 사이의 거리로 정의합니다.
요구 사항:
두 개의 문자열이 주어지면 편집 거리를 계산하는 알고리즘을 작성하세요.
다음 인터페이스를 구현하세요
/* 功能:计算两个字符串的距离 * 输入: 字符串A和字符串B * 输出:无 * 返回:如果成功计算出字符串的距离,否则返回-1 */ public static int calStringDistance (String charA, String charB) { return 0; }
입력 설명:
출력 설명:
예제 1
Input
abcdefg abcdef
1
<?php /* 1、这是一个dp的题目 2、而且是一个线性dp 3、f(i)(j)怎么得到f(i)(j) 4、dp就是刷表,这里明显是刷2维表 5、f(i)(j)表示什么呢:表示字符串1的前i和字符串2的前就j个的距离,那么最终所有就是f(len(str1))(len(str2)) 6、状态转移方程呢:如果字符串1的最后一个和字符串2的最后一个字符相等,那么f(i)(j)=f(i-1)(j-1), 不相等,那么f(i)(j)=min(f(i-1)(j),f(i)(j-1)) 7、想的差不都的时候就直接到excel中根据实例画表即可,不容易出错且清晰快 */ while($str1=trim(fgets(STDIN))){ $str2=trim(fgets(STDIN)); $len1=strlen($str1); $len2=strlen($str2); $dp=null; for($i=0;$i<=$len2;$i++){ $dp[]=array_fill(0,intval($len1)+1,0); } for($i=0;$i<=$len1;$i++){ $dp[0][$i]=$i; } for($i=0;$i<=$len2;$i++){ $dp[$i][0]=$i; } for($i=1;$i<=$len2;$i++){//行 for($j=1;$j<=$len1;$j++){//列 //如果str1[$i-1]在str2:0-$j-1中找到, $str1_2=substr($str1,0,$j); if(strpos($str1_2,$str2[$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[$len2][$len1].PHP_EOL; //print_r($dp); } ?>
관련 권장 사항:
PHP를 사용하여 문서의 이미지를 구문 분석하는 방법PHP는 이메일 전송 및 스팸 처리 방지를 간단하게 구현합니다.WordPress 이미지 주소를 상대 경로로 수정하는 방법
위 내용은 PHP를 사용하여 문자열 사이의 거리를 계산하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!