Given A string s consists of upper/lower-case alphabets and empty space characters ‘ ‘
, return the length of LA St Word in the string.
If the last word does not exist, return 0.
Note:a word is defined as A character sequence consists for non-space characters only.
For example,
Given S = "Hello World"
,
Return 5
.
Solution 1: The input string from the backward scan, first remove the trailing space to get the input string "real" end, and then find the first space position I, two index is the last word, return its length.
classSolution { Public: intLengthoflastword (strings) {intn = s.size (), end = N-1; inti = n-1, j = n-2; if(n = =0)return 0; for(; I >=0; --i) {if(i = = N-1&& S[i] = =' ') { while(S[j] = = S[j +1]) --J; if(J <0)return 0; I-= end-J; End=J; } if(S[i] = =' ')returnEnd-i; } returnEnd-i; }};
Solution 2: The other idea is to pre-preprocess the input string, remove the opening and trailing extra space, and then scan from the go, encounter a space to set the counter zero, otherwise the counter is incremented. The nature of this counter record is the length of the last word.
classSolution { Public: intLengthoflastword (strings) {intn = s.size (), Count =0; intleft =0, right = N-1; while(Left < n && s[left] = =' ') ++Left ; while(Right >=0&& S[right] = =' ') --Right ; for(inti = left; I <= right; ++i) {if(S[i]! =' ') ++count; ElseCount =0; } returncount; }};
[Leetcode]38. Length of last word end word