2016-10-25 21 views
1

没有提供代码,我想获得一个想法,我怎么能得到重复单词在一个字符串,例如:“HelloHelloHelloHello”的结果是:“你好”如何提取字符串中的重复单词?

谢谢

+0

只有重复的单词可以存在于字符串中吗? –

+0

是的只有重复可以存在 – soddik

回答

2

在高电平:

  1. 查找字符串
  2. 对于每个除数N的长度的所有除数,从最小,分割字符串到长度为N的子串
  3. 检查所有子都是平等
  4. 对于第一除这是他们的,那么你就应该回答

为贵“HelloHelloHelloHello”例如:

  • 所有除数:1,2, 4,5,10(忽略20)
  • 对于1:["H","e","l","l","o","H","e","l","l","o", ...]
    • 所有子串不等于
  • 对于2:["He","ll","oH", ...]
    • 所有子串不等于
  • 对于4:["Hell","oHel", ...]
    • 所有子串不等于
  • 对于5:["Hello", "Hello", ...]
    • 所有子串都是相等的。完成。
+0

如果有这种情况怎么办:HelloHelloHelloHe? – soddik

+0

怎么样?问题是什么? –

+0

当给定的字符串是例如:我是一个字符串,关键是:你好,重复的字符串是:HelloHelloHel。所以我怎么知道使用的密钥是Hello。 – soddik

1

这可能不是做到这一点的最有效或彻底的办法,但它仍应工作:通过字符串以索引计数器“I”(开始迭代

  1. 开始在索引1)。
  2. 在每个索引'i'处,期待索引'i +(i + 1)'。如果指数'i +(i + 1)'等于指数'i',则存在潜在的重复单词。
  3. 从那里,从0到'我'的子字符串,并检查是否等于从'我+ 1'到'我+(i + 1)'的子字符串。
  4. 如果那些子字符串相等,你知道你有一个重复的单词。
  5. 如果它们不相等,则可以继续增加'i'并检查步骤2 -5。

注意:一定要检查你的字符串的边界,确保你没有尝试检查索引超出边界的任何这些。

相关问题