/**
* 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.
*
* Tags: String
*/
class LengthOfLastWord {
public static void main(String[] args) {
String a = " ";
String b = "Hello World";
String c = " ";
String d = "a";
System.out.println(lengthOfLastWord(a));
System.out.println(lengthOfLastWord(b));
System.out.println(lengthOfLastWord(c));
System.out.println(lengthOfLastWord(d));
}
/**
* Traverse backwards
* Use count to remember length of word
* Start counting from non-space char
* Return when next space is met and length is not zero
*/
public int lengthOfLastWord(String s) {
if (s == null || s.length() == 0) return 0;
int len = s.length();
int count = 0;
for (int i = len - 1; i >= 0; i--) {
if (s.charAt(i) != ' ') count++;
if (s.charAt(i) == ' ' && count != 0) return count;
}
return count;
}
// mine, trim and check from back
public static int lengthOfLastWord(String s) {
s = s.trim(); // remove front and trailing spaces
char space = ' ';
if (s.indexOf(space) == -1) return s.length(); // dont have a space
int len = s.length();
for (int i = len - 1; i >= 0; i--) { // traverse backwards
if (s.charAt(i) == ' ' && i != len - 1) { // is space and not last one
return len - 1 - i;
}
}
return 0;
}
}