[英]How do I find all repeating character sequences in a string?
您好,我发现很难在我的代码中进行这种修改。 目前它可以识别重复的单词,但是重复的字符序列呢?
例如,如果用户输入:剩下的就是测试
该程序将输出:MOST COMMON:“ est”(但我无法使它正常工作)
或者,如果用户输入:同一游戏
该程序将输出:MOST COMMON:“ ame”
它必须区分大小写(“ XY不能与xY或Xy相同”)。 这是我当前的代码:
string words;
Console.WriteLine("Input string:");
words = Console.ReadLine();
var results = words.Split(' ').Where(x => x.Length > 3)
.GroupBy(x => x)
.Select(x => new { Count = x.Count(), Word = x.Key })
.OrderByDescending(x => x.Count);
foreach (var item in results)
Console.WriteLine(String.Format("{0} occured {1} times", item.Word, item.Count));
Console.WriteLine("Most common = " + results.First());
Console.WriteLine("Least common = "+ results.Last());
拆分为单词,假设最小长度为3个字符,然后找到最频繁然后最长的常用序列:
var results = words.Split(' ')
.SelectMany(w => Enumerable.Range(3, Math.Max(0, w.Length - 2)).Select(n => w.Substring(w.Length - n, n)))
.GroupBy(pw => pw)
.Select(pwg => new { Common = pwg.Key, Count = pwg.Count() })
.OrderByDescending(cc => cc.Count)
.ThenByDescending(cc => cc.Common.Length)
.Take(1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.