Problem
设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为“abcbcd”,则字符串
“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩展串,这里“□”代表空格字符。
如果A1是字符串A的扩展串,B1是字符串B的扩展串,A1与B1具有相同的长度,那么我们定义字符串A1与B1的距离为相应位置上的字符的距离总和,而
两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其它任意字符之间的距离为已知的定值K,空格字符与空格字符的距离为O。在字符
串A、B的所有扩展串中,必定存在两个等长的扩展串A1、B1,使得A1与B1之间的距离达到最小,我们将这一距离定义为字符串A、B的距离。
请你写一个程序,求出字符串A、B的距离。
Input
有多组数据,每一组数据第一行为字符串A,第二行为字符串B,A、B均由小写字母组成且长度均不超过2000,第三行为一个整数K,1≤K≤100,表示空格与其它字符的距离。
Output
每组数据一行包含一个整数,表示要求的字符串A、B的距离。
Sample Input
cmc
snmn
2
Sample Output
10
思路:最终的字符串中可以去掉所有空格对空格,而不改变差。
因此头字符有三种可能:
s1头字符对s2头字符,s1头字符对空格,空格对s2头字符
对剩下部分递归。
s1,s2='cmc','snmn'
k=2
def SD(str1,str2):
if not str1 or not str2:
return k*max(len(str1),len(str2))
else:
return min(abs(ord(str1[0])-ord(str2[0]))+SD(str1[1:],str2[1:]),
k+SD(str1,str2[1:]),k+SD(str1[1:],str2))
print SD(s1,s2)
分享到:
相关推荐
根据给定的信息,本文将对计算字符串距离这一知识点进行详细阐述。主要涉及的是字符串编辑距离(也称为Levenshtein距离)的相关算法实现。 ### 字符串编辑距离简介 字符串编辑距离是指两个字符串之间,由一个转换...
- 组合问题,如字符串的排列、子集、组合、二叉树中的路径问题等。 - 解决问题的递归思想,如回溯算法的基本概念、递归和回溯算法的结合等。 贪心算法(Greedy Algorithm)部分: 贪心算法是一种在每一步选择中都...
* 算法,对任给的2 个字符串A和B,计算出它们的编辑距离d(A,B)。 * 例如: * 输入第一个字符串: * shao * 输入第二个字符串: * shaod * 最短编辑距离 * 1 (2)本题思路分析 * 定义两个字符串s1 ,s2 * 比较两...
参考清华大学的《算法设计与分析》课后的习题,输入两个字符串后输出其编辑距离。
这个题目关注的是如何找出字符串中字符之间的最短距离。LeetCode是一个非常知名的在线编程挑战平台,它提供了大量的算法题目,帮助开发者提升编程技能和算法理解能力。 在PHP与LeetCode的结合中,我们可以学到以下...
6. **字符串编辑距离**:计算两个字符串之间的最小编辑距离,即最少的插入、删除和替换操作次数。 ### 第三部分:综合演练 #### 海量数据处理 6. **关联式容器**:如哈希表、集合、映射等在处理大数据时的角色。 7...
总之,编辑距离问题是一个基础但重要的算法问题,它涉及到字符串处理、动态规划和优化技巧,对于理解和解决更复杂的算法问题具有重要的启示作用。通过学习和掌握这一问题,可以提升我们在计算机科学和信息技术领域的...
标题 "2009 英特尔® 线程挑战赛 第四题 字符串匹配 源码" 指的是一个编程竞赛中关于字符串匹配问题的解决方案,该解决方案利用了并行计算技术来提升性能。描述中提到,这个解决方案使用了两种并行编程库:Intel的...
在这份面试题中,我们可以看到许多关于字符串处理的题目,涵盖了字符串的各种操作,如字符串的比较、编辑距离、子串、回文串、字符串相乘、字符串压缩、字符串解析等等。下面我们将对这些题目进行详细的解释和总结。...
**知识点**:本题考查字符串操作。 **解题思路**: 1. **反转整个字符串**:首先反转整个字符串。 2. **反转单词**:再逐个反转每个单词。 **实现细节**: - 将输入的字符串整体反转。 - 遍历反转后的字符串,逐个...
"前端大厂最新面试题-算法.docx"是一份集合了多种算法知识点和经典面试题的资源。本资源摘要将对标题、描述、标签和部分内容进行详细的知识点生成。 算法知识总结 * 排序算法:冒泡排序、选择排序、插入排序、希尔...
- 给定一组字符,利用栈进行各种操作可以产生不同的字符串组合。 - 当字符依次进入栈时,不同的出栈顺序会产生不同的字符串。题目中提到字符A、B、C依次进入栈,最多可以组成5种不同的字符串。 ### 哈夫曼树及其...
4. 编辑距离:给定两个字符串,计算它们之间的编辑距离,即将一个字符串转换为另一个字符串所需的最少操作次数。 例如,给定字符串 "kitten" 和 "sitting",它们之间的编辑距离是 3。 5. 最长回文子串:给定一个...
### hdoj杭电入门训练题 #### 概述 杭电在线评测系统(HDOJ)是...建议初学者根据自己的实际情况挑选合适难度的题目进行练习,并逐渐过渡到更复杂的算法题。通过不断的实践和学习,逐步提高编程技能和算法思维能力。
其次,"算法实现题1-2 字典序问题"通常涉及到字符串处理,可能要求找出一组字符串中的最小字典序或构建字典序最大的字符串。解决这类问题可以利用二分查找、动态规划或贪心策略,理解字符串的比较规则至关重要。 ...
14. One Edit Distance:判断两个字符串是否相差一个字符,通常用来判断是否为编辑距离为一的字符串。 15. Read N Characters Given Read4:使用API读取文件中的N个字符,解决读取溢出问题。 16. Read N Characters ...
10. **编码与解码**:涉及到位操作、字符串处理、编码技术,如Gray码、Hamming码等。 学习《算法导论》习题答案的过程不仅是验证你解决问题的能力,更是深化理解、拓展思维和提升编程技巧的好机会。通过反复实践,...
KMP算法、Boyer-Moore算法、Rabin-Karp滚动哈希等用于高效字符串匹配;Manacher's Algorithm处理回文串问题;Z-Algorithm和Knuth-Morris-Pratt(KMP)用于求解字符串的最长前后缀。 六、数据结构 包括线性结构...
本次集训涉及的练习题目涵盖了几种不同的算法问题,主要包括字符串操作、路径优化、素数计算以及文本处理等。接下来,我们将逐一分析这些题目所包含的知识点。 1. **Computer Transformation (POJ2680)** 此题主要...