给定一个数字n求能除num的数num中大小为x的子数的个数
例如,号码为250和x = 2答案是225 = = 0 250%和250% 50==0.
有谁能帮我弄一下cpp代码吗?
class Solution {
public:
int divisorSubstrings(int num, int k) {
string s=to_string(num);
int count=0;
int i=0;
int j=k-1;
string temp="";
for(int k=i;k<=j;k++)
{
temp.push_back(s[k]);
}
while(j<s.length())
{
if(num%stoi(temp)==0)
count++;
temp.erase(temp.begin() + i-1);
j++;
i++;
temp.push_back(s[j]);
}
return count;
}
};
显示运行时错误
您有许多问题。首先,使用简单的字母表示变量意味着我们不知道这些变量是用来干什么的。使用有意义的名字
其次,:
for(int k=i;k<=j;k++)
你的方法有一个名为k的参数。现在你已经对它进行了阴影处理。从技术上讲,你可以这样做,但这是一个非常非常坏的习惯。
但真正的问题在这里:
temp.erase(temp.begin() + i-1);
i被初始化为0,直到这一行第一次运行之后才改变。所以你实际上是在删除字符串开始前的一个字符。