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); } }