1 字符串最后一个单词的长度(c++)

2019-03-06  本文已影响0人  cca1yy
image.png

测试用例

输入字符串 ---输出结果
hello world ---5
world ---5
' ' ---0
因此,应考虑输入字符串为空、输入字符串没有空格及输入字符串符合题意有空格三种情况。

代码1

这里根据自己写的测试用例,分别讨论几种不同的情况。首先,将输入的字符串全部接收,存储在input_str字符串里,然后统计字符串内空格数目,根据空格数目的不同来确定最后一个单词的长度。

#include <iostream>
#include <string>
using namespace std;

int main(){
    string input_str;
    int num;
    getline(cin,input_str);
    if(input_str.size() == 0) { //若输入字符串为空
        num = 0;
    }
    else{
        int count = 0;
        for(int i = 0; i < input_str.size(); i++){
            if(input_str[i] == ' ')
                count++;
        }
         if(count == 0){ //输入字符串没有空格
                num = input_str.size();
            }
            else{ // 输入字符串符合题意有空格
                for(int i = input_str.size() - 1; i >= 0; i--){
                    if(input_str[i] == ' '){
                        num = input_str.size() - 1 - i;
                        break;
                    }
                }
            }
    }
    cout << num << endl;
    return 0;
}

代码2

其实还有一种更简便的方法,这里可以用到cin>>的特性,即接收缓冲区内的输入字符串,遇空格、Tab或者回车停止,因此每次接收都只会接收一个单词。若不断将这个单词赋值给一个字符串a,则会不停刷新字符串a的值,直到最后一次赋值。此时,输出字符串的长度即可。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string a;
    int i; //只是用作刷新字符串a的值,无其他意义
    while(cin >> a)
    {
        i++;
    }
    cout << a.length() << endl;
    return 0;
}
运行结果
上一篇 下一篇

猜你喜欢

热点阅读