统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
1. 在词尾添加空格,当一个字母后为空格则单词数目加一
int countSegments(string s) {
int num = 0;
s += ' ';
for(int i =1;i<s.size();i++)
if(s[i-1]!=' '&&s[i]==' ')
num++;
return num;
}
2. 输入流实现
int countSegments(string s) {
string str;
int count = 0;
stringstream ss(s);//定义输入流
while (ss >> str) //将输入流赋给string类型
count ++;
return count;
}
3. 读到一个空格则mark置为true,当mark为true时碰到非空格字符则单词数加一同时mark置为false
int countSegments(string s) {
bool mark = true;
int count = 0;
for(int i = 0 ;i<s.length();i++)
{
if(s[i]!=' '&&mark) {count++;mark = false;}
else if(s[i]==' ') mark = true;
}
return count;
}
4. 遇到非空则单词数加一,随后将i转到下一个空格位置
int countSegments(string s) {
int res = 0;
for(int i =0;i < s.length(); ++i) {
if( s[i] != ' ') { res++;
while(i <s.length() && s[i] != ' ' ) { i++;}}}
return res;
}
5. 读到一个非空字符则flag置为1,碰到空格则count+1,若最后flag为1则count++
int countSegments(string s) {
int flag=0,count=0;
for(int i=0;i<s.size();i++)
{
if(s[i]!=' ') flag=1;
if(s[i]==' ' &&flag==1)
{
count++;
flag=0;
}
}
if(flag==1) count++;
return count;
}
6. 设置temp,存储字符串,遇到空格时若temp不为空串说明单词完结,temp清空,数量+1,否则将字符插入temp
int countSegments(string s) {
int len = s.length();
string temp = "";
int ans = 0;
for (int i = 0; i < len; i++) {
if (s[i] == ' ') {
if (temp != "") {
ans++;
temp = "";
}
}
else {
temp.append(1, s[i]);
if (i == len - 1)
ans++;
}
}
return ans;
}