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; }