如何提取字符串中重复的单词?

时间:2016-10-25 19:15:13

标签: algorithm

不提供代码,我想了解一下,如何在字符串中获取重复的单词,例如:" HelloHelloHelloHello"结果是:"你好"

谢谢

2 个答案:

答案 0 :(得分:1)

高层:

  1. 查找字符串长度的所有除数
  2. 对于每个除数N,从最小值开始,将字符串拆分为长度为N
  3. 的子串
  4. 检查所有子串是否相等
  5. 对于他们所处的第一个除数,将其作为答案
  6. 对于“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", ...]
      • 所有子串都是平等的。完成。

答案 1 :(得分:1)

这可能不是实现这一目标的最有效或彻底的方法,但它应该可以工作:

  1. 首先使用索引计数器迭代字符串' i' (从索引1开始)。
  2. 在每个索引' i',期待索引' i +(i + 1)'。如果索引' i +(i + 1)'等于索引' i'然后有一个潜在的重复词。
  3. 从那里,子串从0到' i'并检查是否等于来自' i + 1'的子字符串。到' i +(i + 1)'。
  4. 如果那些子串彼此相等,你知道你有一个重复的词。
  5. 如果他们不相等,你可以继续增加“我”。并检查步骤2 -5。
  6. 注意:请务必检查字符串的边界,确保在任何这些字符串中都不要尝试检查索引是否超出界限。