j332 - 數列中的數
題目描述
題目給定一個包含數字和字串的數列,以及一個整數 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;
}