题目来源
题目描述
题目解析
#include<bits/stdc++.h>
using namespace std;
std::vector<std::string> split(std::string str, char ch){
str += ch;
int s = 0;
std::vector<std::string> ans;
for (int i = 0; i < str.size(); ++i) {
if(str[i] == ch){
ans.emplace_back(str.substr(s, i - s));
s = i + 1;
}
}
return ans;
}
std::string process(std::string str){
std::vector<int> countVec(256, 0);
bool isUsed = false;
int alpha = 0;
std::string dig;
for (int i = 0; i < str.size(); ++i) {
if(isalpha(str[i])){
alpha = str[i];
}else if(isdigit(str[i])){
dig.push_back(str[i]);
}
if(str[i] == ',' || str[i] == '@' || i == str.size() - 1){
if(isUsed){
countVec[alpha] -= stoi(dig);
}else{
countVec[alpha] = stoi(dig);
}
dig.clear();
if(str[i] == '@'){
isUsed = true;
}
}
}
std::string ans;
for (int i = 0; i < countVec.size(); ++i) {
if(countVec[i] != 0){
ans.push_back((char)i);
ans.push_back(':');
ans.append(std::to_string(countVec[i]));
ans.push_back(',');
}
}
if(!ans.empty()){
ans.pop_back();
}
return ans;
}
int main(int argc, char **argv)
{
std::cout <<process("a:3,b:5,c:2@a:1,b:2");
}