问题描述
atoi()
和s[i] - '0'
是否相同?
int countSubstrings(string s,int n)
{
int count = 0,sum = 0;
unordered_map<int,int> mp;
mp[0]++;
for (int i = 0; i < n; ++i) {
sum += (s[i] - '0');
cout << sum << endl;
count += mp[sum - (i + 1)];
++mp[sum - (i + 1)];
}
return count;
在上面的代码中,我们可以使用atoi()
函数而不使用s[i] - '0'
吗?
解决方法
不,您不能那样替换它。
atoi()
的参数必须是C样式的以null终止的字符串。 s[i]
是单个字符,而不是字符串。因此,如果您想使用atoi()
,则必须首先创建一个字符串来保存字符。
char digit[2] = "";
digit[0] = s[i];
sum += atoi(digit);