题目:
给你一个字符串 s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大
子字符串
。
示例 1:
输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为5。
示例 2:
输入:s = " fly me to the moon " 输出:4 解释:最后一个单词是“moon”,长度为4。
示例 3:
输入:s = "luffy is still joyboy" 输出:6 解释:最后一个单词是长度为6的“joyboy”。
提示:
1 <= s.length <= 104
s
仅有英文字母和空格' '
组成s
中至少存在一个单词
题解:
这道题需要找最后一个单词,这个单词可能前后都会有空格,所以我们需要在从后往前识别的时候,如果识别到字母字符,我们就将flag设置为1表示我们找到了最后一个单词,再识别到空格的时候就就直接打破while循环,直接返回答案即可。
代码如下:
int lengthOfLastWord(char* s) {
int len =strlen(s);
int cnt = 0;
int i = len - 1;
int flag = 0;
while(i >= 0){
if(s[i] == ' ' && flag==0){
i--;
continue;
}
if(s[i] == ' '&& flag ==1){
break;
}
if((s[i] >='a' && s[i]<='z') || (s[i] >='A' && s[i]<='Z')){
cnt++;
i--;
flag = 1;
continue;
}
}
return cnt;
}
这是我个人的刷题记录,欢迎大家给我的博客提建议,以及如果您有好的leetcode刷题流程,希望能给我指点。
个人的github主页:gushouchuanzhi1 (Deyu Tan) · GitHub
个人的刷题记录仓库:https://github.com/gushouchuanzhi1/2023_personal_training