# String Manipulation# Greedy

a011 - 00494 - Kindergarten Counting Game

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算每行文字中的單字數量。單字被定義為連續的英文字母(A-Z 或 a-z)組成的序列。

解題思路

程式碼遍歷輸入的每一行字串。使用一個布林變數 b 來追蹤是否正在單字內部。如果遇到字母,且 bfalse,則表示找到一個新的單字,計數器 ans 增加。將 b 設為 true,表示現在在單字內部。如果遇到非字母字元,則將 b 設為 false,表示離開了單字。每處理完一行,輸出 ans 的值,並將 ans 重置為 1,以便處理下一行。

複雜度分析

  • 時間複雜度: O(n),其中 n 是輸入字串的總長度。程式碼需要遍歷輸入字串的每個字元。
  • 空間複雜度: O(1),程式碼只使用了幾個常數大小的變數,不隨輸入大小而變化。

程式碼

#include <iostream>
#include <string>

using namespace std;

int main(){
	int ans=0;
	bool b=false;
	string a;
	while(getline(cin,a)){
		for(int i=0;i<a.length();i++){
			if(a[i]<=122&&a[i]>=97||a[i]>=65&&a[i]<=90){
				if(b==false){
					ans++;
				}
				b=true;
			}
			else{
				b=false;
			}
		}
		b=true;
		cout << ans << endl;
		ans=1;
	}
	
}

Discussion