标签:
https://leetcode.com/problems/length-of-last-word/
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.
For example,
Given s = "Hello World"
,
return 5
.
解题思路:
从头算起,要考虑尾部的空格,比如"a ",还有尾部没有空格" a",都要及时更新lastLength的数值。
public class Solution { public int lengthOfLastWord(String s) { int length = 0; int lastLength = 0; for(int i = 0; i < s.length(); i++){ if(s.charAt(i) != ‘ ‘){ length++; }else{ if(length > 0){ lastLength = length; } length = 0; } } if(length > 0){ lastLength = length; } return lastLength; } }
后来想到还可以从后往前
public class Solution { public int lengthOfLastWord(String s) { int lastLength = 0; boolean metChar = false; for(int i = s.length() - 1; i >= 0; i--){ if(s.charAt(i) == ‘ ‘ && !metChar){ continue; } if(s.charAt(i) != ‘ ‘){ lastLength++; metChar = true; } if(s.charAt(i) == ‘ ‘ && metChar){ return lastLength; } } return lastLength; } }
看到其他网友的解法,用双指针。仍然是从后往前遍历,lastWordIndex表示跳过结尾所有空格的第一个下标,firstSpaceIndex表示继续往前第一个单词前的空格下标。
public class Solution { public int lengthOfLastWord(String s) { int lastWordIndex = s.length() - 1; while(lastWordIndex >= 0 && s.charAt(lastWordIndex) == ‘ ‘){ lastWordIndex--; } int firstSpaceIndex = lastWordIndex; while(firstSpaceIndex >= 0 && s.charAt(firstSpaceIndex) != ‘ ‘){ firstSpaceIndex--; } return lastWordIndex - firstSpaceIndex; } }
标签:
原文地址:http://www.cnblogs.com/NickyYe/p/4351503.html