Given a string s consists of upper/lower-case alphabets and empty space characters ’ ', return the length of last word in the string.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.
Example:
Input: “Hello World”
Output: 5
java实现
思路
获取去掉起始和结束的空格后字符串的长度len_strim,获取最后一次出现空格的位置loc,思考所求的最后一个单词的长度与len_strim和loc的关系,result=len_strim-loc-1
java实现
class Solution {
public int lengthOfLastWord(String s) {
//思路:获取去掉起始和结束的空格后字符串的长度len_strim,获取最后一次出现空格的位置loc,思考所求的最后一个单词的长度与len_strim和loc的关系,result=len_strim-loc-1
int len_strim=s.trim().length();
int loc=s.trim().lastIndexOf(" ");
int result=len_strim-loc-1;
return result;
}
}
/*
trim()去掉起始和结束的空格
public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。
例如:
注意:为了显示出空格,此处_代表空格
字符串:hello_world len_strim=11 loc=5 len_strim-loc-1=11-5-1=5
字符串:a_ len_strim=1 loc=-1 len_strim-loc-1=1-(-1)-1=1
*/
c++
实现思路
去除右边空格,从右开始第一个不是空格的字符算起到再次遇到空格位置的长度
c++实现
class Solution {
public:
int lengthOfLastWord(string s) {
int len = 0;
int tail = s.length() - 1;//定位到最右边字符
while (tail >= 0 && s[tail] == ' ')
tail--;//去除右边空格 比如a_ _代表空格
while (tail >= 0 && s[tail] != ' ') {
len++; //长度增加
tail--;//前移
}
return len;
}
};