打印给定字符串中不重复的第一个字符

时间:2015-06-07 06:48:51

标签: c++ string pointers

我在c ++中使用以下函数返回给定字符串中不重复的第一个字符,如果没有找到则返回' @'。

char MyMethod(const char* str, int len){
    int i,index=-1;
    int *count = new int[256];

    for(i=0;i<len;i++)
    {
       count[*(str+i)]=0;
    }

    for(i=0;i<len;i++)
    {
       count[*(str+i)]++;
    }

    for(i=0;i<len;i++)
    {
        if(count[*(str+i)]==1)
        {
            index=i;
            break;
        }
    }

    if(index==-1)
        return '@';
    else
        return *(str+index);
}

这个方法看起来很好,但总是返回字符串的第一个字符。 例如,对于以下字符串

aabcdd

它返回&#39; a&#39;而不是&#39; b&#39;。

1 个答案:

答案 0 :(得分:2)

我相信有一个错字。 声明:

 if(count[*(str+i)]==1);

不应该被终止:

 if(count[*(str+i)]==1)

删除分号,以便仅在条件为真时才评估if条件之后的语句。 否则,无论if的结果如何,都将评估语句。