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.
Solution:
after skipping inceptive spaces backwards(or trim), find first space backwards
Code1:
class Solution {
public int lengthOfLastWord(String s) {
if(s == null || s.length() == 0) return 0;
// skip space backwards
int back_start = s.length() - 1;
while(back_start >= 0 && s.charAt(back_start) == ' ') back_start--;
// find first first space backwards from back_start
int space_pos = -1;
for(int i = back_start; i >= 0; i--) {
if(s.charAt(i) ==' ') {
space_pos = i;
break;
}
}
return start - space_pos;
}
}
Code2:
class Solution {
public int lengthOfLastWord(String s) {
int len = 0, tail = s.length() - 1;
while (tail >= 0 && s.charAt(tail) == ' ') tail--;
while (tail >= 0 && s.charAt(tail) != ' ') {
len++;
tail--;
}
return len;
}
}
Code3:
class Solution {
public int lengthOfLastWord(String s) {
return s.trim().length() - s.trim().lastIndexOf(" ") - 1;
}
}