万红花丛没有绿

B2120 单词的长度

Orange0628 @ 2023-09-12 20:17:12

#include <bits/stdc++.h>
using namespace std;
char a[10005];
long long t=0;
int main()
{
    cin>>a;
    int n=strlen(a);
    int t=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]!=' ')
        {
            t++;
        }
        else if(t>0)
        {
            cout<<t<<",";
            t=0;
        }
    }
    cout<<t;
    return 0;
}

by 幻想繁星 @ 2023-09-12 20:19:39

for(int i=0;i<n;i++)

你的char数组是从0开始存的


by 幻想繁星 @ 2023-09-12 20:20:53

而且最后没有,


by ForgottenK @ 2023-09-12 20:40:28

@幻想繁星 有没有一种可能,cin 读到空格就结束了根本读不全。。。


by Steven_wu @ 2023-10-13 20:03:44

@Orange0628

题意解析

其实就是求每两个空格之间有多少个字符。然后分别输出。

其次cin读入不了空格,所以要用geline。

#include"bits/stdc++.h"
using namespace std;
//
const int N=1e8+10;
unsigned long long sum , ans , cnt ;
string st ;
int main()
{
    ios::sync_with_stdio(false);
    getline(cin, st);   //cin读入不了空格,所以要用geline。

    for(int i = 0 ; i <= st.size() ; i ++ )   //i要等于0,因为字符串开头是从下标0开始
    {
        if(i == st.size())  //字符串变量.size()是字符串的长度的意思。
        {
            cout << ans << endl ;
            break ;   //跳出循环
        }
        if(st[i] == ' ' && st[i+1] == ' ')
        {
            continue ;   //省略下面内容,直接执行下一次循环。
        }
        if(st[i] != ' ')
        {
            ans ++ ;
        }
        if(st[i] == ' ')
        {
            cout << ans << "," ;  //输入后面要加逗号。
            ans = 0 ;
        }
    }
    return 0;      //AC了
}

关一下吧求求了。


|