手机号查询
題目:
信服君接受一項任務需要制作一個手機號碼查詢系統,輸入連續的數字后,需要顯示所有包含該連續數字的手機號。為了驗證算法,信服君當前只需輸出手機號的個數即可。
注:直接用數學的查找方式如果(phonenum [i] .find(test)!= string :: npos)會超時,只能AC80%,這里用空間替換時間效率AC了100%。的連續組合方式,從而節省了找到的時間。
#include<bits/stdc++.h> using namespace std; int main(){int i,j,n,q;unordered_map<string,int>m;//用于記錄連續數字出現的數字,key=連續數字,value=次數cin>>n>>q;//n個手機號碼,q個查詢數字段unordered_set<string>phone;//用set進行存儲避免了號碼的重復插入string s;while(n--){ cin>>s;if(s.size()!=11)continue;//不是正確的電話號碼則不必存儲phone.insert(s);//用set進行插入,避免號碼的重復} for(unordered_set<string>::iterator it=phone.begin();it!=phone.end();++it){s=*it;unordered_set<string>c;for(i=0;i<11;++i){string t;for(j=i;j<11;++j){t+=s[j];c.insert(t);//將一個手機號碼所有的連續組合方式進行存儲,用空間替換時間}}for(auto p:c)m[p]++;//計數} while(q--){cin>>s;//輸入連續數字段cout<<m[s]<<endl;//輸出他的次數}return 0; }總結
- 上一篇: 付费代理使用
- 下一篇: 最新Keil MDK 5.37下载