Description
Count the number of segments in a string, where a segment is defined to be a contiguous sequence of
non-space characters.
Please note that the string does not contain any non-printable characters.
Example
Input: "Hello, my name is John"
Output: 5
Solution 1(C++)
class Solution {
public:
int countSegments(string s) {
int count=0, flag=0;
for(int i=0; i<s.size(); i++){
if(!isspace(s[i]) && !flag){count++; flag=1;}
if(isspace(s[i]) && flag){flag=0;}
}
return count;
}
};
Solution 2(C++)
class Solution {
public:
int countSegments(string s) {
istringstream in(s);
string str = "";
int cnt = 0;
while(in >>str)
cnt ++;
return cnt;
}
};
算法分析
解法一是自己写的,解法二是参考别人的答案。解法一就不赘述了,对于解法二,采用了istringstream,这是个新奇玩意。
参考博客:istringstream用法、C++中的istringstream 的用法、istringstream、ostringstream、stringstream 类介绍 .。
其实,istringstream完成string按空格分割。如果下次还能遇到这个,可以多留意留意。
程序分析
略。