给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World"
输出:5
示例 2:
输入:s = " fly me to the moon "
输出:4
示例 3:
输入:s = "luffy is still joyboy"
输出:6
1.如果利用java中String的方法trim()和split()可以很快实现该功能。
class Solution {
public int lengthOfLastWord(String s) {
String newString = s.trim();
String[] words = s.split(" ");
return words[words.length - 1].length();
}
}
题目的本意应该不是这样,常规代码:从后往前遍历字符串,遇到空格跳过,遇到第一个字母开始计数,在遇到空格就停止计数。当一个问题从前往后比较复杂的时候,就要思考能不能从后往前进行。
class Solution {
public int lengthOfLastWord(String s) {
int length = s.length();
int index = length - 1;//从末尾开始遍历
int count = 0;//计数器,记录字母的长度
while(index >= 0 && s.charAt(index) == ' '){//末尾遇到空格就跳过
index--;
}
while(index >= 0){
if(s.charAt(index) == ' '){//再次遇到空格就退出循环
break;
}else{//遇到字母就将计数器加1,然后继续向前遍历
count++;
index--;
}
}
return count;
}
}
题源:力扣



