在这个问题中,我们得到了字符串str。我们的任务是创建一个程序,以查找字符串及其所有后缀的相似度之和。
字符串str的后缀是通过消除字符串的起始字符创建的所有字符串。
字符串str1和str2的相似之处是两个字符串共有的最长前缀的长度。例如,str1 ='abbac'和str2 ='abb'为3。
而str1 ='abca'和str2 ='ca'为0。从开始算起。
让我们举个例子来了解这个问题,
输入-str ='xyxyx'
输出-
说明-所有子字符串以及带有所有后缀的字符串的相似性为-
‘xyxyx’ -> 5 ‘yxyx’ -> 0 ‘xyx’ -> 3 ‘yx’ -> 0 ‘x’ -> 1 Sum = 5 + 0 + 3 + 0 + 1 = 9
为了解决这个问题,我们将使用Z算法并计算Z数组。Z数组是一个长度等于字符串长度的数组。每个元素都存储str的前缀。下面的程序显示了实现,
#include <bits/stdc++.h> using namespace std; void createZArray(string str, int n, int Zarray[]) { int L, R, k; L = R = 0; for (int i = 1; i < n; ++i) { if (i > R) { L = R = i; while (R < n && str[R - L] == str[R]) R++; Zarray[i] = R - L; R--; } else { k = i - L; if (Zarray[k] < R - i + 1) Zarray[i] = Zarray[k]; else { L = i; while (R < n && str[R - L] == str[R]) R++; Zarray[i] = R - L; R--; } } } } int calSumSimilarities(string s, int n) { int Zarray[n] = { 0 }; createZArray(s, n, Zarray); int total = n; for (int i = 1; i < n; i++) total += Zarray[i]; return total; } int main() { string s = "xyxyx"; int n = s.length(); cout<<"Sum of similarities of string with all of its suffixes is "<<calSumSimilarities(s, n); return 0; }
输出结果
Sum of similarities of string with all of its suffixes is 9
本文向大家介绍C ++中的相似字符串组,包括了C ++中的相似字符串组的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个字符串X和Y,如果可以交换X的两个字母,它们是相似的,因此等于Y。另外,如果两个字符串X和Y相等,则它们相似。例如,考虑两个字符串,例如“ tars”和“ rats”相似,如果我们交换t和r,则可以找到另一个,现在“ rats”和“ arts”相似,但是“ star”不同类
本文向大家介绍C ++中的K相似字符串,包括了C ++中的K相似字符串的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个字符串A和B。如果我们可以将A中的两个字母的位置恰好交换K次,使得结果字符串为B,那么这两个字符串是K相似的(其中K是一个非负整数)。在两个字谜A和B之间,我们必须找到与A和B类似的最小K。 因此,如果输入类似于A =“ abc”,B =“ bac”,则输出将为2。 为了解
问题内容: 我已经看到了关于获取所有可能的子字符串(即相邻字符集)的许多问题,但是对于生成所有可能的字符串(包括其子字符串的组合)都没有疑问。 例如,让: 我希望输出是这样的: 要点是,我们可以删除原始字符串中不相邻的多个字符(以及相邻的字符)。 到目前为止,这是我尝试过的: 但是,这只会从原始字符串中删除相邻字符串的集合,而不会返回上例中的元素。 另一个示例是,如果我们使用字符串,则输出列表应包
问题内容: 我有一组字符串,例如 我只是想找到这些字符串中最长的公共部分,这里是前缀。在上面的结果应该是 琴弦 应该导致前缀 Python中是否有一种相对轻松的方法来确定前缀(而不必手动遍历每个字符)? PS:我正在使用Python 2.6.3。 问题答案: 永远不要重写提供给您的内容: 返回最长的路径前缀(一个字符一个字符),它是列表中所有路径的前缀。如果列表为空,则返回空字符串()。请注意,这
本文向大家介绍C#计算2个字符串的相似度,包括了C#计算2个字符串的相似度的使用技巧和注意事项,需要的朋友参考一下 计算字符串相似度,直接来C#代码 返回结果就是相似度了,验证码识别上用的到 爱给模板网提供 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
问题内容: 我想将多个字符串相互比较,并找到最相似的字符串。我想知道是否有任何库,方法或最佳实践会返回我哪些字符串与其他字符串更相似的字符串。例如: “The quick fox jumped” -> “The fox jumped” “The quick fox jumped” -> “The fox” 该比较将返回第一个比第二个更相似。 我想我需要一些方法,例如: 某处有这样的东西吗? 编辑: