华为机试题 001计算字符串最后一个单词的长度

原创 2016年08月30日 14:30:20
/*
题目描述:计算字符串最后一个单词的长度,单词以空格隔开。
输入:一行字符串,非空,长度小于5000。
输出:整数N,最后一个单词的长度。
*/
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char str[5000];
	//cin>>str;
	//错误一:cin的输入以空格未结束标志,但是输入的字符串中可能有空格,就会出错
	gets(str);
	//gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取
	int len=strlen(str);
	if(0!=len)
	{
		int num=0;
		while(' '==str[len-1])//注意:要考虑字符串末尾有空格的情况
			len--;

		for(int i=len-1;i>=0;i--)
		{
			if(' '==str[i])
				break;
			num++;
		}
		cout<<num<<endl;
	}
	return 0;
}


#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	getline(cin,str);
	if (""!=str)//字符串非空
	{
		int num=0;
		int pos=str.find_last_not_of(' ',string::npos);//从后往前找第一个不是空格的字符位置
		while ( pos>=0 && ' '!=str.at(pos) )//注意' '!=str.at(pos)必须放在后面,因为at()会检查是否越界		
		{
			num++;
			pos--;
		}
		cout<<num<<endl;
	}
	
	return 0;
}
/*注意' '!=str.at(pos)必须放在后面,因为at()会检查是否越界
如果最后一个单词的长度就是整个字符串的长度,pos=0满足执行循环体后pos=-1,
at(-1)会抛出异常,而pos>=0放在前面发现条件不满足直接退出循环,不会出现at(-1)的情况
*/


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

华为机试题:字符串最后一个单词的长度

题目描述: 计算字符串最后一个单词的长度,单词以空格隔开。 输入描述: 一行字符串,非空,长度小于5000。 输出描述: 整数N,最后一个单词的长度。 输入例子: ...

华为机试001:字符串最后一个单词的长度(华为OJ001)

华为机试 字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开。 提交网址: http://www.nowcoder.com/practice/8c949ea5f36f4...

计算字符串最后一个单词长度

题目:计算字符串最后一个单词的长度,单词以空格隔开 输入样例: hello world 输出样例: 5 题目分析: ①由于题目中输入的字符串有空格,所以我们这里不能用scanf输入,我们采用gets(...

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

题目描述:计算字符串最后一个单词的长度,单词之间以空格隔开(基础题)思路一:由String的lastIndexOf的方法,直接找到最后一个空格前的字符串的长度,得到最后一个单词的长度

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

/** * Copyright (C) 2014, CSU * All rights reserved * File Name:test.cpp * Author: lmm * Date o...

《每天一算法》17/1/13--求字符串最后一个单词的长度

问题:一串字符串,求其最后一个单词的长度 分析 思路一:因为单词之间是通过“ ”(空格)来划分的,所以可以使用正则表达式对“ ”进行分割,创建由各个单词组成的数组,然后取最后一个数组求其长度; ...

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

题目描述 计算字符串最后一个单词的长度,单词以空格隔开。 输入描述: 一行字符串。 输出描述: 整数N,最后一个单词的长度。 输入例子: hello world 输出例子: 5 g...

华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。

问题描述: 输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。 运行时间限制: 无限制 内存限制: 无限制 ...
  • cvMat
  • cvMat
  • 2016-09-01 21:16
  • 689

2016华为机试题:字符串按指定长度分割

问题描述: 输入M个字符串,按指定长度N拆分每个字符串,输出新的字符串,长度不是N的整数倍的字符串请在后面补数字0 输入:输入整数M,N,以逗号隔开 每行一个字符串,共M个字符串,每行字符串小于50个...

LintCode_最后一个单词的长度

笔试面试题
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)