【发布时间】:2015-06-12 18:14:14
【问题描述】:
如何从一组输入字符串中自动提取常用字符或常用字符串?有没有这样的算法?
我正在尝试弄清楚如何解析 1000 个输入字符串并根据最大匹配模式自动创建字符串组。
是否有 ruby 中的库可以执行此操作?
Sample Input
What is your name?
Who wrote this book?
Your name starts with ABC
Is this book good?
Why is your name so long?
Have you read this book?
Expected Output.
your name
——————
What is your name?
Your name starts with ABC
Why is your name so long?
this book
————
Who wrote this book?
Have you read this book?
Is this book good?
根据 luqui 的评论进行了编辑以澄清和修复错误。
- 大小写无关紧要。
【问题讨论】:
-
您需要指定什么是“匹配模式”。是共同的单词数量,共同的子字符串的大小,还是什么?大小写或标点符号重要吗?请通过编辑您的问题进行澄清。
-
这是一个有趣的算法挑战;我不知道任何标准解决方案。想到的第一个:制作一个包含所有子字符串的字典。所以在第二行之后我们会有字典
{ "W" => 2, "Wh" => 2, "Wha" => 1, "Who" => 1, "What " => 1, "Who w" => 1, "hat" => 1, "ho " => 1 }等等。遍历字符串列表,计算子字符串。然后在最后寻找超过一定长度的最大值(显然单个字符的计数最高,所以你需要一些额外的约束) -
顺便说一句,“这本书”肯定是第二套的匹配模式。
标签: ruby algorithm pattern-matching