[英]Difficulty writing run length encoder in c++
尝试编写这个运行长度编码器,它基本上可以工作,但由于'/0',它没有通过测试用例。
代码
std::string run_length_encode(const std::string& str)
{
std::string encoded = "";
char prevch;
char newch;
int count = 1;
prevch = str[0];
for (int i = 0; i <= str.length(); i++)
{
newch = str[i];
if (prevch == newch)
{
count++;
}
else
{
encoded += prevch;
if (count > 1)
{
encoded += std::to_string(count);
}
prevch = newch;
count = 1;
}
}
if (prevch == newch)
{
encoded += newch;
if (count > 1)
{
encoded += std::to_string(count);
}
}
return encoded;
错误信息:
Expected equality of these values:
run_length_encode("A")
Which is: "A\0"
"A"
答案应该是 A 但我的代码返回 A\\0。
for (int i = 0; i <= str.length(); i++)
应该
for (int i = 0; i < str.length(); i++)
在 C++ 中,字符串索引从零开始并在字符串长度之前的一结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.