字符串中子序列的长度

时间:2011-11-01 09:57:25

标签: c++ string sequences

我需要实现lastSeq函数,该函数作为参数string strchar chr 并返回重复chr的最后一个序列的长度(序列可以是任意长度) 例如: lastSeq("abbaabbbbacd",'a')应返回1
lastSeq("abbaabbbbacd",'b')应该返回4 lastSeq("abbaabbbbacd",'t')应返回0

有没有C ++功能可以解决它?

2 个答案:

答案 0 :(得分:6)

这似乎是家庭作业,所以我只是给你指导,以便你自己找到答案。

首先,如果没有计算机为您的样品提供正确的结果,您将如何自己完成。从那些手动运行中,您将如何通过简单的步骤进行概括,以便您可以解决所有不同输入的问题。

到目前为止,您应该有一个粗略的算法来解决问题。您对C ++中的字符串存储以及该类中可用的方法有何了解?可以使用它们中的一些来解决算法的某些步骤吗?

尝试使用这些函数编写程序,编译并运行它。你得到了预期的结果吗?如果没有,你可以尝试打印中间状态(使用std::cout << "Some value: " << variable << "\n";)来尝试调试它。

完成所有这些操作后,如果您仍然遇到问题,请使用您的代码更新您的问题,我们将能够为您提供更多直接帮助。

答案 1 :(得分:1)

int lastSeq(char *str, char chr)  
{  
    int i = strlen(str);  
    int l = 0;  

    while(--i>=0)  
       if(*(str + i) == chr && ++l)  
          break;

    while(--i>=0 && chr == *(str + i) && ++l);  

    return l;  
}