2012-09-04 50 views
-5

我有一个字符串,如"one two one three""one|two|three|two"从C中的字符串中删除重复单词C

从字符串中C.

除去重复的单词的任何想法
+4

是的。编写一个功能。 – 2012-09-04 05:05:22

+0

自己尝试一下。如果遇到问题,请寻求帮助。 –

+0

如果这是家庭作业或面试问题,本网站上的约定是使用标签将其标记为。 – gcbenison

回答

2

伪码:

hare=tortoise=str; /* let str = your starting string. */ 
while (hare != NULL): 
    if !(been_seen(current_word(hare))): 
    word_copy(tortoise, hare); 
    advance_to_next_word(hare); 
    advance_to_next_word(hare); 
*tortoise = NULL; 

说明:快速移动“野兔”指针通过串前进,每次一个字。当它遇到以前看不见的单词时,将该单词复制到尾随的“乌龟”指针,然后将其提前到该单词的末尾。这破坏性地修改了原始字符串。

要实现这种方法,你就需要实现advance_to_next_word()(这将对检测字边缘通过您的分隔符一个标记),word_copy(),最重要的been_seen(),一个函数,它必须返回false第一次是通过任何字作为参数,然后true对任何后续调用具有相同的参数。任何关联数组(字典)数据结构都可以。