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.
}
我不知道如何遍历字符串。
答案 0 :(得分:10)
答案 1 :(得分:3)
我认为你的例子没有任何意义,你使用已经在计算中返回长度的length
。如果我是你的导师,我不会接受这个作为有效的解决方案。
您可能需要使用const char*
int count(const char* s){
if(*s == '\0')
return 0;
return 1 + count(s + 1);
}
答案 2 :(得分: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());
}
答案 3 :(得分:1)
也许您想要使用substr
。
答案 4 :(得分:0)
我知道你想要一个C ++解决方案,但仍然如此。有时C比C ++好。
int count(const char *s) { if(*s == 0) return 0; else return 1 + count(++s); };
调用count(str.c_str())。
答案 5 :(得分:0)
#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));
}