两个字符串之间的所有共同子串

编程入门 行业动态 更新时间:2024-10-11 09:19:32
本文介绍了两个字符串之间的所有共同子串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我工作的C#找两个字符串之间的所有常见的字符串。例如,如果输入是: S1 =需要用电子邮件asssitance S2 =电子邮件援助需要

的输出应 - 需要帮助电子邮件

下面的代码返回最长公共子,但我想我的代码返回所有常见的字符串。任何帮助深表感谢!

静态无效commonsubstrings() {输入1 =需要电子邮件asssitance 输入2 =电子邮件需要援助 如果(input2.Length> input1.Length) {互换=输入1; 输入1 =输入2; 输入2 =掉; } INT K = 1; 串温度; 字符串longTemp =; 的for(int i = 0;(I< = input1.Length);我++) {如果((我== input1.Length)) {如果(最长!= NULL) {K = longest.Length + 1; } ,否则 { K = 1; } TEMP = input1.Substring(1 input1.Length - 1); 如果(temp.Equals()) {中断; } 如果(K< = temp.Length) { I = K - 1; 输入1 =温度; 如果(!(最长= NULL)及及(longest.Length> longTemp.Length)) { longTemp =最长的; } } } holder1 = input1.Substring(0,K); 为(INT J = 0;(J< input2.Length)及及(J + K< = input2.Length); J ++) { CHECK1 = input2.Substring(J,K); 如果(holder1.Equals(CHECK1)) {最长= holder1; 中断; } } k的序列++; } Console.WriteLine(最长); 到Console.ReadLine();

}

解决方案

公共静态字符串[] CommonString(左字符串,字符串右) {名单,LT;字符串>结果=新的List<串GT;(); 的String [] = rightArray right.Split(); 的String [] = leftArray left.Split(); result.AddRange(rightArray.Where(R => leftArray.Any(L => l.StartsWith(R)))); //时,必须注意检查其他方式离开阵列包含比右边的数组 result.AddRange较小的字(leftArray.Where(L => rightArray.Any(R = GT; R。 StartsWith(1)))); 返回result.Distinct()ToArray的()。 }

I am working on C# to find all the common substrings between two strings. For instance, if the input is: S1= "need asssitance with email" S2= "email assistance needed"

The output should be- 'need assistance email'

The below code returns the longest common substring, but I want my code to return all the common substrings. Any help is much appreciated!

static void commonsubstrings() { input1 = "need asssitance with email"; input2 = "email assistance needed" if (input2.Length > input1.Length) { swap = input1; input1 = input2; input2 = swap; } int k = 1; String temp; String longTemp = ""; for (int i = 0; (i <= input1.Length); i++) { if ((i == input1.Length)) { if (longest != null) { k = longest.Length + 1; } else { k = 1; } temp = input1.Substring(1, input1.Length - 1); if (temp.Equals("")) { break; } if (k <= temp.Length) { i = k - 1; input1 = temp; if ((longest != null) && (longest.Length > longTemp.Length)) { longTemp = longest; } } } holder1 = input1.Substring(0, k); for (int j = 0; (j < input2.Length) && (j + k <= input2.Length); j++) { check1 = input2.Substring(j, k); if (holder1.Equals(check1)) { longest = holder1; break; } } k++; } Console.WriteLine(longest); Console.ReadLine();

}

解决方案

public static string [] CommonString(string left, string right) { List<string> result = new List<string>(); string [] rightArray = right.Split(); string [] leftArray = left.Split(); result.AddRange(rightArray.Where(r => leftArray.Any(l => l.StartsWith(r)))); // must check other way in case left array contains smaller words than right array result.AddRange(leftArray.Where(l => rightArray.Any(r => r.StartsWith(l)))); return result.Distinct().ToArray(); }

更多推荐

两个字符串之间的所有共同子串

本文发布于:2023-11-28 21:58:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1644088.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   两个

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!