leetcode-58.最后一个单词的长度
题意
给定一个仅包含大小写字母和空格
' '
的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World" 输出: 5
输入: "a"
输出: 1
输入: "a b c "
输出: 1
算法
- 反向遍历字符串
- 如果存在字符不是空格,从此开始计数直到碰到下一个空格;
- 否则,返回0.。
code
1 class Solution { 2 public: 3 int lengthOfLastWord(string s) { 4 int ans = 0; 5 for(int i=s.length()-1; i>=0; i--) 6 { 7 if(s[i] != ' ') 8 { 9 while(s[i] != ' ') 10 { 11 ans++; 12 i--; 13 if(i < 0) 14 { 15 break; 16 } 17 } 18 break; 19 } 20 } 21 return ans; 22 } 23 };
上面代码有些乱,最近更新了一版
源码
算法
1. while循环去掉字符串末尾的所有空格
2. while循环统计最后单词长度(不是空格的累加,遇到空格跳出返回)
1 class Solution { 2 public: 3 int lengthOfLastWord(string s) { 4 int len = s.length(); 5 if(len == 0) 6 return len; 7 8 int res = 0, i = len-1; 9 while(s[i] == ' ' && i >= 0) 10 i--; 11 while(s[i] != ' '&& i >= 0) 12 { 13 res++; 14 i--; 15 } 16 17 return res; 18 } 19 };