LeetCode 434:Number of Segments in a String (c++)

来源:互联网 发布:文件夹加密软件免费 编辑:程序博客网 时间:2024/05/23 01:59
一:题目

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
计算字符串中的段数,其中一个段被定义为一个连续的非空格字符序列。         
请注意,字符串中不包含任何不可打印字符。

二:解题思路


一开始简单理解为,一句话中,用空格分隔每一个单词,统计空格的个数num,num+1即为字符串中的段数,结果通不过所有的测试用例
1.如空串“”,返回结果应该i为0
2.如全部是空格“                  ”,返回结果应该也为0

思路:首先要去掉字符串两端的空格,然后统计单词与单词之间的“空格数”(当前为空格,空格的下一位非空),返回“空格数”+1,即为段数

三:代码实现
class Solution {public:        //去掉开头和结尾的空格    string trim(string s){        int i;        //去除左边的空格        for(i=0;i<s.length();i++)            if(s[i]!=' ')                break;        s=s.substr(i,s.length()-i);                //去除右面的空格        for(i=s.length()-1;i>=0;i--)            if(s[i]!=' ')                 break;        s=s.substr(0,i+1);                return s;    }        int countSegments(string s) {                //判断字符串是否长度为0或者都是空格(去掉空格后,长度也为0),如果是则字段为0       s=trim(s);       if(s.length()==0)             return 0;       //把字符串两端的空格都去掉        int i;        int j=0;        for(int i=0;i<s.length()-1;i++){             //空格减去‘A’是-33.如果这个字符是空格,但是下一个字符不是空格,则是一个字段            if(s[i]==' ' && s[i+1]!=' ')                j++;         }                 return j+1;     }};

阅读全文
0 0
原创粉丝点击