int count(string s){
if(s == "")
return 0;
if(s.length == 1)
return 1;
return 1 + count() //This is what I can't figure out. How to traverse the string.
//I just need a hint, not a full on answer.
}
我不知道如何遍历字符串。
我认为您的示例没有任何意义,您使用length
它已经在计算中返回长度。如果我是你的导师,我不会接受这是一个有效的解决方案。
你可能需要使用const char*
int count(const char* s){
if(*s == '\0')
return 0;
return 1 + count(s + 1);
}
如果您的目的是遍历字符串,我建议使用迭代器(请参阅 参考资料std::string::begin
)。
template<typename It>
int count(It const begin, It const end)
{
return (begin != end ? count(begin + 1, end) + 1 : 0);
}
int count(std::string const& s)
{
return count(s.begin(), s.end());
}
也许你会想使用substr
.
我知道你想要一个 C++ 解决方案,但仍然。有时 C 比 C++ 更好。
整数计数(const char *s) { 如果(*s == 0) 返回0; 否则返回 1 + count(++s); };
调用 count(str.c_str())。
#include<stdio.h>
main(){
char str1[100];
gets(str1);
int i=0;i=len(str1,i);printf(" \nlength of string is %d",i);
}
int len(char s1[],int i) {
printf("\n%c",s1[i]);
int sum=0,count =1;
if(s1[i] == '\0') return 0;
else
return (count += len(s1,++i));
}