我需要实现lastSeq
功能,它可以获取作为参数string str
和char chr
和返回重复chr
的最后序列的长度,例如(该序列可以是任意长度的) 中: lastSeq("abbaabbbbacd",'a')
应该返回1
lastSeq("abbaabbbbacd",'b')
应该返回4 lastSeq("abbaabbbbacd",'t')
应返回0长度子序列的串
有C++函数,它能解决呢?
我需要实现lastSeq
功能,它可以获取作为参数string str
和char chr
和返回重复chr
的最后序列的长度,例如(该序列可以是任意长度的) 中: lastSeq("abbaabbbbacd",'a')
应该返回1
lastSeq("abbaabbbbacd",'b')
应该返回4 lastSeq("abbaabbbbacd",'t')
应返回0长度子序列的串
有C++函数,它能解决呢?
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;
}
这似乎是家庭作业,所以我只是给你指示,让你可以自己找到答案。
首先,您将如何自己做,而无需计算机为您的样品提供正确的结果。从这些手动运行中,您将如何简单地进行概括,以便您可以解决所有不同输入的问题。
到此为止,您应该有一个粗略的算法来解决这个问题。你对C++中存储字符串有什么了解,以及该类可用的方法?有人可以用它来解决算法的一些步骤吗?
尝试使用这些函数编写程序,编译它并运行它。你有预期的结果吗?如果没有,您可以尝试打印中间状态(使用std::cout << "Some value: " << variable << "\n";
)尝试调试它。
完成所有这些操作后,如果仍然存在问题,请使用您的代码更新您的问题,我们将能够为您提供更直接的帮助。
好的。你的问题是什么?你有什么尝试? – Mat
对此没有直接的功能,你将不得不使用字符串可用的各种查找函数来实现算法。查看'std :: string'或者C字符串函数的一个很好的参考。 – Nim