- 问题1-对于输入:"所有_我_需要_",对应的输出为:3 1 4.
- 问题2-对于输入:"All_I_Need",对应的输出相同:三一四
- 问题3-对于输入:"全部_",对应的输出为:3
- 问题4-对于输入:"全部",对应输出相同:3
虽然我的代码解决了问题1,但给出了正确的输出:314,在第二题中,它给出了:3 1 0 0 0 0.用同样的方法,我的代码解决了问题3,给出了正确的输出:3,但对于问题4,它给出了输出:0 0 0
int password_numbers(const char *s){
int count = 0;
for(int i = 0; i < strlen(s); i++)
{
if(s[i] != '_')
{
count++;
}
else
return count;
}
return 0;
}
int array_password_numbers(int *a, int n, char *s){
int result = 0;
int i = 0;
int streak;
while( i < strlen(s) ){
streak = password_numbers(s + i);
a[result++] = streak;
i+=streak + 1;
}
return result;
}
2条答案
按热度按时间pxy2qtax1#
zfciruhq2#
您的代码几乎是正确的。您所遗漏的只是如果_不在s中,password_numbers()应该返回什么。如果是这种情况,那么您位于原始字符串的末尾,并且没有终止的_。因此,您应该返回strlen(s)而不是0。通过该更改,您的代码将正确工作。