这是通过逗号分隔的整数列表,我只打印一个整数的实例,即使有多个逗号分隔。 (CodeEval挑战https://www.codeeval.com/open_challenges/29/)
我的问题是我试图在没有任何外部存储的线性时间内完成此操作。我最后不能用逗号(例如1,3,4,6)。我在网上找到的解决方案都使用一些列表来存储整数,然后进行打印。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string str = "1,2,2,3,3,3,4,4";
char c;
int num = -1;
for (int i = 0; i < str.length(); ++i) {
if (str[i] == ',') continue;
else {
c = str[i];
if ((c - '0') != num) {
num = c - '0';
cout << num << ",";
}
}
}
cout << endl;
return 0;
}
答案 0 :(得分:3)
其中一个解决方案是使用布尔标志:
bool first = true;
for( ... ) {
if( first ) first = false;
else std::cout << ',';
std::cout << data;
}
答案 1 :(得分:0)
if (i == str.length() - 1)
{
cout << num;
}
else
{
count << num << ",";
}
答案 2 :(得分:-2)
或者您可以在字符串处理结束时打印退格:
{{1}}