摘要: 最长公共子序列,英文缩写为LCS(LongestCommonSubsequence)。定义:一个序列S,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。两个字符串的最长子序列并不要求字符串连续,只要求有序,即统计两个字符串有多少个重复的字符。用动态规划的思路做。设C[i][j]记录以X[i]为结尾的字符串与Y[j]为结尾的字符串的LCS的长度,分两组情况考虑:1)X[i]==Y[j],则C[i][j]的结果可以根据C的定义通过C[i-1][j-1],得到2)X[i]/=Y[j],则转化为C[i][j-1]和C[i-1][j]的结果,具体公 阅读全文
posted @ 2013-03-18 23:29 westfly 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 问题描述:将给定的字符串,按照规格压缩,Inplace压缩字符串压缩规格为:相同字符连续,则压缩为“字符+数字个数”,如”aaaa”压缩为”a4第一个想法是如果都为非重复字符的话,如abc,则编码后岂不是要a1b1c1,占用空间是之前的2倍,达不到压缩的目的,所以应该默认为1的不输出,按照这个思路,在原字符串上进行替换。第二个想法是如果字符超过10个,即count对于的字符数字大于1个,又该如何,原博文并未处理。细想起来,这里隐含这itoa的转换,但itoa转换的字符序为倒序,需要reverse一下。如下是最终的实现版本。 size_t InplaceCompress(char* str) . 阅读全文
posted @ 2013-03-18 23:00 westfly 阅读(421) 评论(0) 推荐(0) 编辑