Length of Last Word
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
.
思路:这道题正反做法都可以。首先使用两个指针left,right;先从尾部开始,使用right记录尾部第一个不等于' '的位置,然后用left=right-1,从这个位置继续循环,遇到第一个为' ',left记录其位置。right-left的差额就是最后一个词的长度。
class Solution { public: int lengthOfLastWord(const char *s) { if(s==NULL) return 0; int n=strlen(s); int right=n-1; while(right>=0 && s[right]==' ') right--; if(right<0) return 0; int left=right-1; while(left>=0 && s[left]!=' ') left--; return right-left; } };
解法二:从头部开始循环遍历。每次遇到' ',计算这个单词的长度,并记下下一个单词的起始位置,直到遇到*s=='\0'结束符,结束循环.这一次start记录了最后一个单词的起始位置,然后s已经到达了结束符位置。两者之间的距离就是最后一个单词的长度了。
class Solution { public: int lengthOfLastWord(const char *s) { if(s==NULL) return 0; const char *start=s; int nLength=0; while(*s!='\0') { if(*s==' ') { int len=s-start; if(len!=0) nLength=len; start=s+1; s++; } else s++; } int len=s-start; if(len!=0) nLength=len; return nLength; } };