题目描述
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = “Hello World”
输出:5
示例 2:
输入:s = " fly me to the moon "
输出:4
示例 3:
输入:s = “luffy is still joyboy”
输出:6
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
int lengthOfLastWord(string s) {
bool isFirst = true;
int count;
for(char c : s) {
if(c != 32) { //不是空格,且是第一个字符的话,那么count置位1
if(isFirst) {
isFirst = false;
count = 1;
} else { //不是空格,不是第一个字符,那么count++
count++;
}
} else {
isFirst = true;
}
}
return count;
}
int lengthOfLastWord(string s) {
int a, b = -1;
//a记录从后向前找,第一个字母的位置,肯定可以找到,题目有说明
//b记录从a-1向前找,第一个空格的位置,不一定能找到,要是找不到说明,该单词的第一个字母的下标为0,所以前一个为-1
//这里考虑了所有情况,得出a-b为实际的长度
for(int i = s.size() - 1; i >= 0; i--) {
if(s[i] != 32) {
a = i;
break;
}
}
for(int i = a - 1; i >= 0; i--) {
if(s[i] == 32) {
b = i;
break;
}
}
return a - b;
}
int main() {
int num = lengthOfLastWord("0P");
cout << num << endl;
return 0;
}