繁体   English   中英

如何找到字符串中所有重复的字符序列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM