此问题已在此处有答案:
Single quotes vs. double quotes in C or C++(15个回答)
Why do 'char' values have to have single quotation marks instead of double? [duplicate](2个答案)
3天前关闭。
如果将最多一个字符设置为1,那么最长的子字符串只包含1的长度是多少?
例如,给定s=“1101100111”,答案是5
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int Largeststring(string nums) {
int left = 0, curr = 0, ans = 0;
for (int right = 0; right < nums.size(); right++) {
if (nums[right] == "0") {
curr++;
}
while (curr > 0) {
if (nums[left] == "0") {
curr--;
}
}
ans = max(ans, right - left + 1);
}
}
int main()
{
string s = "1101100111";
cout << Largeststring(s);
}
在这段代码中,它给出了编译时错误
“error:ISO C++ forbids comparison between pointer and integer [-fpermissive]”for lines“nums[right] ==“0”and the similar line for nums left.
首先,在这种情况下,我不明白指针是什么,也没有整数,我以为这是因为我通过引用调用它给出了这个错误,但我将其切换为通过值调用,但错误似乎仍然存在
因此,最初我尝试使用char
vector,我认为错误是因为字符被单独初始化为char
向量,但当我切换到string
时,似乎存在同样的问题。
请帮助我解决这个问题。
2条答案
按热度按时间mdfafbf11#
我的C / C++时代几年前就结束了,但让我们看看有问题的一行:
nums[left] == "0"
nums[left]
是一个char(所以是一种整数)"0"
是一个 string literal(因此是一种字符指针)因此
==
尝试将指针"0"
与整数nums[left]
进行比较。这就是错误消息想要告诉你的。解决办法应该是:
nums[left] == '0'
'0'
是一个字符,所以现在你比较两个字符(一种整数)。guykilcj2#
您的代码有几个问题
1.语法:
nums[i]
是一个char
,而不是string
,所以应该是nums[i] == '0'
1.语法:你应该返回函数的结果:
return ans;
1.算法:代码在
101
上失败让我们扫描字符串,同时尝试将 each
0
更改为1
,然后返回maximumresult
:fiddle你自己