接上: string compAndSetValue(string avail_str, string use_str){ // a:5 & a:3 => a:2 int len1 = avail_str.size(); int index1 = avail_str.find(':'); string a_pre_str = avail_str.substr(0,index1); string a_post_str = avail_str.substr(index1+1,len1-1-index1); int a_num; sscanf(a_post_str.c_str(),"%d",&a_num); // convert string to number int len2 = use_str.size(); int index2 = use_str.find(':'); string u_pre_str = use_str.substr(0,index2); string u_post_str = use_str.substr(index2+1,len2-1-index2); int u_num; sscanf(u_post_str.c_str(),"%d",&u_num); // convert string to number if(a_pre_str==u_pre_str){ a_num -= u_num; char ch_num[10]; //const_cast<char*>(a_post_str.c_str()) sprintf(ch_num,"%d",a_num); // convert number to string a_post_str = ch_num; avail_str = a_pre_str + ':' + a_post_str; } return avail_str; } string outputAvailSet(vector<string> avail_set, vector<string> used_set){ int a_len = avail_set.size(); int u_len = used_set.size(); for(int i=0;i<u_len;++i){ for(int j=0;j<a_len;++j){ avail_set[j] = compAndSetValue(avail_set[j],used_set[i]); } } string str; for(int i=0;i<a_len;++i){ if(i<a_len-1){ str += avail_set[i] + ','; }else{ str += avail_set[i]; } } return str; } int main(int argc, char *argv[]) { string str = "a:3,b:5,C:12,d:100@a:1,b:5,C:9"; //input unsigned long long cut_point = str.find('@'); int len = str.size(); string str1 = str.substr(0,cut_point); string str2 = str.substr(cut_point+1,len-1-cut_point); vector<string> avail_set = cutStr(str1); vector<string> used_set = cutStr(str2); string avail_set_str = outputAvailSet(avail_set,used_set); cout<<avail_set_str<<endl; //output return 0; }
点赞 评论

相关推荐

12-06 16:17
济宁学院 Java
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务