c++笔试读写模板
分割字符串
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iomanip>
#include <set>
using namespace std;
/*
如果需要找到下标
int index=s.find(',')
*/
//分割字符串1
vector<int> process(string s){
vector<int> res;
stringstream input(s); //读取str到字符串流中
string temp;
//使用getline函数从字符串流中读取,遇到分隔符时停止,和从cin中读取类似
//注意,getline默认是可以读取空格的
while(getline(input, temp, ','))
{
res.push_back(stoi(temp));
}
return res;
}
//分割字符串2
vector<int> mysplit(string str, const char pattern)
{
vector<int> res;
stringstream input(str);
string temp;
while(getline(input, temp, pattern))
{
res.push_back(stoi(temp));
}
return res;
}
int main(){
string s;
cin>>s;
s=s.substr(1, s.size()-2);
vector<int> rains=mysplit(s, ',');
int n=rains.size();
vector<int> res(n, -1);
multiset<int> st;
for(int i=0;i<n;i++){
if(rains[i]>0){
res[i]=-1;
st.insert(rains[i]);
}
else{
for(int j=i+1;j<n;j++){
if(rains[j]>0 && st.count(rains[j])){
res[i]=rains[j];
st.erase(rains[j]);
break;
}
else if(rains[j]>0){
res[i]=rains[j];
}
}
}
}
for(int i=0;i<n;i++){
if(i==0) cout<<'['<<res[i]<<',';
else if(i==n-1) cout<<res[i]<<']';
else cout<<res[i]<<',';
}
//cout<<rains[rains.size()-1];
//cout<< fixed << setprecision(2)<<rate<<'%';
return 0;
}