我用的栈。设置了一个全局变量cur=1。如果出现的是J,就压入cur++。如果出现了Z,就把栈中元素输出到vector里,然后根据这个Z后面有几个J,从小到大依次压cur++入栈(对应连续的J),最后再压一个cur++(对应当前的Z)。(出栈时候正好相反,会得到从高到低的结果,正好是递减的。) emmmm感觉没讲清楚,这是我的code。 vector<int> sort_number(string& s) { if (s == "") return vector<int> {1}; int cur = 1; stack<int> sta; vector<int> res; sta.push(cur++); for (int i = 0; i < s.size(); i++) { if (s[i] == &#39;J&#39;) { sta.push(cur++); } else { // &#39;Z&#39; while (!sta.empty()) { res.push_back(sta.top()); sta.pop(); } while (s[i + 1] == &#39;J&#39;) { i++; sta.push(cur++); } sta.push(cur++); } } while (!sta.empty()) { res.push_back(sta.top()); sta.pop(); } return res; }
点赞 2

相关推荐

刘湘_passion:出国旅游?那就小心你的腰子咯
点赞 评论 收藏
分享
牛客网
牛客企业服务