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