# String Parsing# Greedy

j332 - 數列中的數

🔗 前往 ZeroJudge 原題

題目描述

題目給定一個包含數字和字串的數列,以及一個整數 n。要求計算 n 在數列中出現的次數,以及所有出現的 n 的總和(由於每個 n 的值都等於 n,所以總和等於 n 乘以出現次數)。

解題思路

這題主要思路是解析輸入的字串,提取其中的數字,並檢查每個數字是否等於給定的整數 n。如果相等,則計數器加一。最後,輸出計數器的值和 n 乘以計數器的結果。程式碼使用一個迴圈遍歷字串,當遇到數字時,提取完整的數字,並與 n 比較。

複雜度分析

  • 時間複雜度: O(S),其中 S 是輸入字串的長度。因為需要遍歷整個字串來提取數字。
  • 空間複雜度: O(1),因為只使用了常數級別的額外空間來儲存計數器和臨時變數。

程式碼

#include <bits/stdc++.h>
using namespace std;
int x,n,ct;
string a,b;
int main(){
	getline(cin,a);
	cin >> n;
	a+=' ';
	for(int i=0;i<a.size();++i){
		if(a[i]>='0'&&a[i]<='9'){
			int tmp=0;
			while(a[i]>='0'&&a[i]<='9'){
				tmp*=10;
				tmp+=a[i]-'0';
				++i;
			}
			if(tmp==n)++ct;
		}
	}
	cout << ct << "\n" << n*ct;
}

Discussion