leetcode刷题日记—— Length of Last Word

本文介绍了一种算法,用于确定给定字符串中最后一个非空格字符组成的单词的长度。通过从字符串末尾开始处理,该算法有效地解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

问题分析:题目目标就是求出字符串最后一个单词的长度,因此我们只需要找出最后一个单词就可以了,正常情况下,最后一个单词的开头为一个空格,也就是我们常规统计就可以了,但是特殊的是如果后面全是空格,我们所要查找的最后一个单词就是从后面数第一个不为空格的那个单词了,所以这里需要注意一下,实现代码如下:

class Solution {
public:
    int lengthOfLastWord(string s) {
       int index = 0, count = 0;
	int length = s.size();
	for (int i = 0; i<length; i++){
		if (s[i] == ' ') index = i;
	}
	for (int i = index + 1; i<length; i++){
		count++;
	}
	if (index == 0 && length != 0){
		if (s[index] == ' ') return length - 1;
		return length;
	}
	if (index == length - 1){
		while (s[index - 1] == ' ') index--;
		for (int i = index - 1; i >= 0; i--){
			if (s[i] == ' ') return count;
			count++;
		}
	}
	return count;
    }
};

当然基于上述问题的求解的启发,我们可以从后面来开始处理字符串,若最后一个字符不为空格,就统计,若为空格,就向前寻找到不为空格的字符然后再统计,实现代码如下:

class Solution {
public:
    int lengthOfLastWord(string s) {
      int length = s.size();
	int index = length;
	int count = 0;
	if (s[index - 1] == ' '){
		while (s[index - 1] == ' '&&index>1) index--;
		for (int i = index - 1; i >= 0; i--){
			if (s[i] == ' ') return count;
			count++;
		}
	}
	else{
		for (int i = length - 1; i >= 0; i--){
			if (s[i] == ' ') return count;
			count++;
		}
	}
	return count;
    }
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值