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
.
我的最初解法:
public class Solution {
public int lengthOfLastWord(String s) {
int i = s.length() - 1;
int count = 0;
char flag = 0;
while (i >= 0) {
if (isletter(s.charAt(i))) {
flag = 1;
count ++;
} else if (flag == 1) {
return count;
}
i --;
}
return count;
}
public boolean isletter(char ch) {
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
return true;
} else {
return false;
}
}
}
1、设置标识位
2、第一次为字符时,设为1,同时计数,在下一次非字符时返回计数值
3、若全不为字符,最后也输出计数值0
我的第二次解:
public class Solution {
public int lengthOfLastWord(String s) {
int i = s.length() - 1;
int count = 0;
char flag = 0;
while (i >= 0) {
if (s.charAt(i) != ' ') {
flag = 1;
count ++;
} else if (flag == 1){
return count;
}
i --;
}
return count;
}
}
判断非‘ ’即可,不用判断是否为字符。本以为会缩短时间,实测时间增加。
更简洁的方法,一行代码:
public class Solution {
public int lengthOfLastWord(String s) {
return s.trim().length()-s.trim().lastIndexOf(" ")-1;
}
}
删掉左右空格,删除后的长度减去最后一次空格的索引位置,等于最后一个单词的长度。66666……