栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++面试向学习(简称:刷题)1.字符串最后一个单词的长度

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++面试向学习(简称:刷题)1.字符串最后一个单词的长度

文章目录
  • 前言
  • 一、题目描述
  • 二、解题思路
    • 1.1 从前往后取空格之后的字符(加)
    • 1.2 从前往后取空格之后的字符(减)
    • 2.1 从后往前取字符,到空格时停止
    • 3 最精简的代码
  • 总结
  • 参考文献


前言
一个菜鸟的学习经历,题目出自牛客网的华为机试。答案和解题思路借鉴了许多评论区的大佬们的代码。

提示:以下是本篇文章正文内容,下面案例可供参考

一、题目描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。

示例:

输入:
hello nowcoder
复制
输出:
8
说明:
最后一个单词为nowcoder,长度为8  
二、解题思路 1.1 从前往后取空格之后的字符(加)

从空格之后开始计数进行累加

代码如下(示例):

#include 
#include 
using namespace std;
int main(){
	char s;           
	int size=0;	      
	do{
	   	s=getchar();
	   	if ( s == ' '){
            size=0;
		}			  //当取到空格后计数器清零
		else if  ( s != '/n'){
			size++;
		}			 //取到字符后加1
		else{

		}			//此处强调一下else if后可跟条件,eles后面不能跟条件,所以这个else是有必要的
	}while(s != 'n/');	
	cout< 
1.2 从前往后取空格之后的字符(减) 

找到最后的空格位置(长度),再由整段字符长度减去。
ps:需要注意的是 s[0] 才是第一个字符,故在计算长度时需要-1

代码如下(示例):

#include
#include
using namespace std;
int main()
{
    string s;
    getline(cin, s);			
    int length = s.length();	
    int tmp=-1;					
    for(int i=0; i
        if(s[i] == ' ')
        {
            tmp = i;
        }
    }

    cout< 
2.1 从后往前取字符,到空格时停止 

由于题目中申明字符串末尾不以空格为结尾,故此处不考虑结尾有空格的情况。

代码如下(示例):

#include
#include
using namespace std;
int main()
{
    string s ;
    while ( getline(cin,s) ){
        int n=0, flag=1 ;
        for ( int i = s.length() - 1 ; i >= 0 ; i-- )
        {
            if ( s[i] != ' ' ){
                flag = 0;
                n++ ;
            }
            else{
                break;
            }
        }
        cout << n << endl;
    }
    return 0 ;
}
3 最精简的代码

巧妙利用了cin的读取逻辑,简单来说就是以cin>>的方法使用时会以空格、tab、换行符(n)为分隔符,重新开始读取。真的惊艳到我了。

代码如下(示例):

#include
using namespace std;
int main() {
    string s;
    while(cin >> s);
    cout << s.size();
    return 0;
}

总结

一道并不复杂的题目,解法和思路很多,择优选择。
虽然很菜,但是我很爱学。


参考文献

cin相关内容:
https://blog.csdn.net/k346k346/article/details/48213811

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号