美文网首页
1 字符串最后一个单词的长度(c++)

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

作者: cca1yy | 来源:发表于2019-03-06 14:40 被阅读0次
    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;
    }
    
    运行结果

    相关文章

      网友评论

          本文标题:1 字符串最后一个单词的长度(c++)

          本文链接:https://www.haomeiwen.com/subject/rmgyuqtx.html