我有一个随机的句子,然后我将句子(使用%字符)拆分成块,其中每个块是两个字符(包括空格和标点符号)宽。然后我洗牌。现在,问题是如何重新组合句子?
这是一个例子:
“今晚我很享受晚餐。”
分割句子:%I%en%jo%ye%d%my%d%in%ne%r%to%ni%gh%t。%
洗牌:%r%en%ye%d%d%in%to%my%ni%gh%ne%t。%jo%I%
现在,如何从这些块中重新组合句子? %r%en%ye%d%d%in%to%my%ni%gh%ne%t。%jo%I%
我的第一个想法是首先识别单词然后重建句子。可以根据我们拥有的空格数来猜测单词的数量。在上面的例子中,有4个空格,那么就有5个单词。还可以使用英语中所有单词的字典。 请告诉我你如何重新组装单词的想法 谢谢!
答案 0 :(得分:0)
使用for循环遍历单词列表,然后将每个连续索引附加到字符串变量。
for(String s : list)
{
completeSentance += s;
}
答案 1 :(得分:0)
我首先尝试获取仍然留在块中的所有信息,然后使用某种(智能)暴力。
对于以下内容,我假设每个块的宽度为2个字符,并且在句子末尾使用.
,!
,?
,在句子中使用逗号和分号。逗号或分号后,有一个空格。我进一步假设这里考虑的所有句子都可以切成2个字符宽的块。
May x
可以是任意字符,_
表示空格。
x_
,如果空格在末尾,则块形成一个单词结尾,或一个只包含一个字符的单词。带有大写字母的X_
也是句子第一个单词的候选词,除了I_
或其他一个字母单词,用大写字母书写并且可以出现在句子的中间
_x
,如果空格位于开头,则该字符为单词前缀。它不是句子的第一个块,而不是最后一个块。
x!
,x?
,x.
以及与分隔句子的其他标点符号的组合是句子的最后一个
x´
形成以s
声音结尾的单词的属格,所以这是另一个结尾的单词,如果
x
发出s
声音。
x´
如果x
没有s
声音,则会形成常规属性,并且可以预期会有s_
块。
´s
代表了一般性案例中的一句话。
注意
我已经将这些撇号规则应用于生成,但它们是they're
之类的情况,依此类推。如果要包含这些案例,则必须为这些案例创建规则。也许从一开始就避免使用这些简短形式会更容易。
_
+ 1的数字,但前提是逗号和分号后面有空格!也许可以添加更多规则,例如G。 a_
或_a
有可能自己形成一个单词,但它也可能只是一个单词结束或开始。
拥有所有规则后,应用防弹的规则。使用标点规则查找句子的最后一个块。找到单词begins和单词endings。尽可能排除。在您不能再排除任何内容之后,请启动强制执行,但不要搜索所有单词,只搜索可以使用仍然打开的字符构建单词的单词。