如何找到大小为 k 的子数的计数
How to find the count of sub numbers of size k which divide the number
给定一个数字 n
在除以 num.
的数字 num 中求大小为 x 的子数的个数
例如,如果数字是 250
x=2
答案将是 2
作为 250%25==0
和 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,并且在该行第一次运行之后才更改。所以你实际上是在删除字符串开头之前的一个字符。
给定一个数字 n 在除以 num.
的数字 num 中求大小为 x 的子数的个数例如,如果数字是 250 x=2 答案将是 2 作为 250%25==0 和 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,并且在该行第一次运行之后才更改。所以你实际上是在删除字符串开头之前的一个字符。