1152単語の個数問題


質問する

  • 英語の大文字と小文字からなる文字列を与えます.この文字列にはいくつの語がありますか?この問題を解くプログラムを作成してください.しかし、1つの単語が何度も出てきたら、出てきた回数によって数えなければなりません.
  • 条件

  • 文字列長が100000以内
  • の最初の行は、英語の大文字、小文字、またはスペースであってもよい.
  • 空白が2回連続して発生することはなかった.
  • 文字列は、スペースの先頭または末尾で使用できます.
  • アルゴリズム#アルゴリズム#

  • ユーザーから入力します.(入力を受信するにはスペースを含める必要があります)
  • 通常のスキャン("%s",input)のみでは、スペースを含む読み取りはできません.
  • だからこの方法(「^n」s,input);これ以外の方法については、以下で説明します.
  • に入力された文字列に対して、計算はいくつかの単語しかありません.
  • 文字列を取得して空白に分割するためにTokenizerを使用した.
  • Tokenizerは、ユーザーが指定したブレーク文字列に基づくロールであり、スペースベースのブレーク文字列を作成します.
  • 今日習った。


    C
  • Stringスペースを含む4種類の入力方法を提供する
  • gets(input);
  • fgets(input, 1000000, stdin);
  • scanf("%[^\n]s", input);
  • scanf("%[^\n]*c", input);
  • C使用のTokenizer
  • char *token = strtok(input, ““)
  • から単語を分類して次の単語に移動する方法はtoken=strtok(NULL,").
  • コード#コード#



    福娃

    #include <stdio.h>
    
    #include <string.h>
    
    int main(){
    
    	char input[1000000];
    
    	int word=0;
    
    	scanf("%[^\n]s", input);
    
    	char *token = strtok(input, " ");
    
    	while(token){
    
    		word++;
    
    		token = strtok(NULL, " ");
    
    	}
    
    	printf("%d", word);
    
    	return 0;
    
    }