基礎程式設計題(PTA) 7-26 單詞長度 (15分)

tsuiraku發表於2020-11-17

7-26 單詞長度 (15分)

你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以.結束。你要輸出每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如it's算一個單詞,長度為4。注意,行中可能出現連續的空格;最後的.不計算在內。

輸入格式:

輸入在一行中給出一行文字,以.結束

**提示:**用scanf("%c",...);來讀入一個字元,直到讀到.為止。

輸出格式:

在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。

輸入樣例:

It's great to see you here.

輸出樣例:

4 5 2 3 3 4
思路

注意兩個測試樣點比較坑人

  • 空句子
  • 開頭結尾多個空格

測試樣點:

  • 輸入

    hello world       .
    .
          hello    world  .
           .
    
  • 輸出

    5 5
    (無輸出)
    5 5
    (無輸出)
    

#include<iostream>
#include<stdio.h>
#include<set>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<string.h>
using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;
string s;
int a[10001];

int main()
{
    getline(cin,s);
    int cnt=0,idx=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]==' ' && cnt>0)
        {
            a[idx++]=cnt;
            cnt=0;
            continue;
        }
        else if(s[i]==' ' && cnt==0) continue;
        else if(s[i]=='.' && cnt==0) break;
        else if(s[i]=='.' && cnt>0) a[idx++]=cnt;
        else cnt++;
    }
    int flag=1;
    for(int i=0;i<idx;i++) 
    {
        if(flag)
        {
            printf("%d",a[i]);
            flag=0;
        }
        else printf(" %d",a[i]);
    }

    return 0;
}

相關文章