c++写法,利用字符串的查找功能实现

字符串最后一个单词的长度

http://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da

可以通过字符串的查找功能(find函数)来实现.
例如字符串 "haha hello nowcoder"
使用string类自带的find函数,从字符串第一位开始将字符串中所有空格的下标记录,该字符串空格的下标有[4,10]
然后我们用该字符串的长度(19)-最后一个空格的位置(10)-1(再减去1是因为下标是从0开始的)即可得到最后一个单词的长度。
取出一个容器的最后一位,且符合后进先出,这里我们考虑借助栈来实现.

代码实现
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
   string a;
   getline(cin,a);//输入一个字符串,这样可以将空格读入,直接用cin会在第一个空格处截断字符串,因为cin不能读入空格.
   if(a.empty()) return 0; //字符串为空 直接返回0
   int pos=0;//从下标0开始找空格
   stack<int>st;//定义一个栈来存放空格的下标
   while(a.find(' ',pos)!=string::npos)//从pos位置找第一次出现空格的位置
    {
        pos=a.find(' ',pos);//找到空格,获得其下标.
        st.push(pos);//将该下标放入栈中
        pos++;//位置+1,
    }
   if(st.empty()) cout<< a.size();//栈空则没有空格,直接输出其字符串的长度
   else cout<< a.size() - st.top() - 1;//st.top() 获得栈顶元素,即最后一个空格的下标
   return 0;
}


全部评论

相关推荐

11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务