华为机试-字符串最后一个单词的长度

题目描述

计算字符串最后一个单词的长度,单词以空格隔开。

自解

思路:
从左至右检索,
getline()读取整行输入,字符循环,每遇到空格计数归零,然后直到最后一个空格之后的字符计数即为结果。

#include 
using namespace std;
int main()
{
    string str;
    while(getline(cin, str))
    {
        int i = 0;
        int count = 0;
        while(str[i] != '\0')
        {
            if(str[i] != ' ')
            {
                count++;
            }
            else
            {
                count = 0;
            }
            ++i;
        }
        cout << count << endl;
    }
    return 0;
}

运行时间:6ms
大小:616K

其他

思路:从右至左检索,遇到空格计数结束,即得结果。

#include 
#include 
using namespace std;
  
class Solution 
{
public:
    int CountWordLen(string str) 
    {
        int len = str.size();
        if(len == 0) 
        {
        	return 0;
        }
        int count = 0;
        for(int i = len-1; i>=0 && str[i] != ' '; i--) 
        {
            count++;
        }
        return count;
    }
};
  
int main() 
{
    Solution S;
    string str;
    while(getline(cin,str)) 
    {
        cout << S.CountWordLen(str) << endl;
    }
    return 0;
}

速度:18ms
大小:596K

你可能感兴趣的:(华为机试练习记录)