leecode 解题总结:58. Length of Last Word

#include 
#include 
#include 
#include 
using namespace std;
/*
问题:
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

For example, 
Given s = "Hello World",
return 5.

分析:题目的意思是找到最后一个单词的长度。
可以找到第一个空格,如果找不到第一个空格,说明直接返回字符串的长度
找到第一个空格后,继续向
或者从第一个非空格字符开始,不断记录当前单词长度,一旦遇到空格,就尝试寻找下一个单词,最终返回当前单词长度即可
注意这里需要一行读取,不能用C++的cin,只能用gets
输入:
Hello World
Hello
输出:
5
5
*/

class Solution {
public:
    int lengthOfLastWord(string s) {
        if(s.empty())
		{
			return 0;
		}
		int len = s.length();
		int i = 0;
		int wordLen = 0 ;
		while(i < len)
		{
			//寻找第一个非空字符
			while( i < len &&  ' ' == s.at(i))
			{
				i++;
			}
			if(i >= len)
			{
				break;
			}
			//找到了,开始记录单词长度
			wordLen = 0;
			while( i < len &&  ' ' != s.at(i))
			{
				wordLen++;
				i++;
			}
			//遇到空字符了
		}
		return wordLen;
    }
};


void process()
{
	 const int MAXSIZE = 10000;
	 char str[MAXSIZE];
	 Solution solution;
	 while( gets_s(str) )
	 {
		 string s(str);
		 int result = solution.lengthOfLastWord(s);
		 cout << result << endl;
	 }
}

int main(int argc , char* argv[])
{
	process();
	getchar();
	return 0;
}


你可能感兴趣的:(leecode)