这是一个相对简单的问题,我们可以通过遍历字符串来解决。我们需要找到连续的'1',并计数这些连续的'1'的数量。如果我们找到超过一个这样的连续的'1',我们就返回false。否则,我们返回true。
以下是一个C++的解决方案:
#include <string>
bool checkBinaryString(const std::string& s) {
int count = 0;
for (int i = 0; i < s.length(); ++i) {
if (s[ i] == '1') {
// 如果当前字符是'1',并且它是第一个字符,或者前一个字符不是'1',则增加计数
if (i == 0 || s[i - 1] != '1') {
++count;
}
// 如果我们找到超过一个连续的'1',则返回false
if (count > 1) {
return false;
}
}
}
// 如果我们没有找到超过一个连续的'1',则返回true
return true;
}
这个算法的时间复杂度是O(n),其中n是字符串s的长度。这是因为我们只遍历了一次字符串。这个算法的空间复杂度是O(1),因为我们只使用了一个固定大小的变量来存储计数。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案 |