我需要实现lastSeq
函数,该函数作为参数string str
和char chr
并返回重复chr
的最后一个序列的长度(序列可以是任意长度)
例如:
lastSeq("abbaabbbbacd",'a')
应返回1
lastSeq("abbaabbbbacd",'b')
应该返回4
lastSeq("abbaabbbbacd",'t')
应返回0
有没有C ++功能可以解决它?
答案 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;
}