LeetCode 58: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.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.

Example:

Input: “Hello World”
Output: 5

java实现

思路

获取去掉起始和结束的空格后字符串的长度len_strim,获取最后一次出现空格的位置loc,思考所求的最后一个单词的长度与len_strim和loc的关系,result=len_strim-loc-1

java实现

class Solution {
    public int lengthOfLastWord(String s) {
        //思路:获取去掉起始和结束的空格后字符串的长度len_strim,获取最后一次出现空格的位置loc,思考所求的最后一个单词的长度与len_strim和loc的关系,result=len_strim-loc-1
        int len_strim=s.trim().length();
        int loc=s.trim().lastIndexOf(" ");
        int result=len_strim-loc-1;
        return result; 
        
    }
}

/* 
trim()去掉起始和结束的空格
public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回-1。

例如:
注意:为了显示出空格,此处_代表空格
字符串:hello_world  len_strim=11 loc=5  len_strim-loc-1=11-5-1=5
字符串:a_           len_strim=1  loc=-1 len_strim-loc-1=1-(-1)-1=1
*/

c++

实现思路

去除右边空格,从右开始第一个不是空格的字符算起到再次遇到空格位置的长度

c++实现

class Solution {
public:
    int lengthOfLastWord(string s) { 
        int len = 0;
        int tail = s.length() - 1;//定位到最右边字符
        while (tail >= 0 && s[tail] == ' ') 
            tail--;//去除右边空格  比如a_      _代表空格
        while (tail >= 0 && s[tail] != ' ') {
            len++; //长度增加
            tail--;//前移
        }
        return len;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值