1.题目
给你一个字符串 s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
2.示例
3.思路
通过对字符串的反转,转为数组开始遍历,设计两个指针。一个指针找到最后单词的起始,另一个指针指向单词指针的末尾,
LeetCode代码:
class Solution {
public int lengthOfLastWord(String s) {
int preDex= 0;
int tailDex= 0;
StringBuffer stringBuffer = new StringBuffer(s);
char sts[] = stringBuffer.reverse().toString().toCharArray();
while (sts[preDex]==' '){
preDex++;
}
tailDex = preDex;
while (sts[tailDex]!=' '){
if (tailDex == sts.length-1){
tailDex++;
break;
}
tailDex++;
}
return tailDex-preDex;
}
}
详细解析案例代码:时间复杂度O(n);
package LettCode08;
import java.util.Arrays;
public class javaDemo {
public static void main(String[] args) {
String s = " fly me to the moon ";
// 最后一个单词的头下角标和尾下角标
int preDex= 0;
int tailDex= 0;
// 将字符串反转
StringBuffer stringBuffer = new StringBuffer(s);
char sts[] = stringBuffer.reverse().toString().toCharArray();
// 找到最后一个单词的起始
while (sts[preDex]==' '){
preDex++;
}
// 找到一个单词的末尾
tailDex = preDex;
while (sts[tailDex]!=' '){
if (tailDex == sts.length-1){
tailDex++;
break;
}
tailDex++;
}
// 初始位减去末尾位就是长度了
System.out.println(tailDex-preDex);
}
}