程序設(shè)計(可用任何編程語言實現(xiàn))
排序數(shù)字字符串的數(shù)字(升序),遇到0時從數(shù)字字符串中刪除,如"1324”排序后應(yīng)該為“1234”,”9002“排序后應(yīng)該為”29“。
class?Solution: ????def?sort_number_str(self,?s): ????????if?not?s: ????????????return?s ????????s_lst?=?list(map(int,?list(s))) ????????self.quit_sort(s_lst,?0,?len(s_lst)?-?1) ????????return?''.join([str(i)?for?i?in?s_lst?if?i?>?0]) ????def?quit_sort(self,?lst,?left,?right): ????????def?find_index(lst,?left,?right): ????????????tmp?=?lst[left] ????????????while?left?<?right: ????????????????while?left?<?right?and?lst[right]?>=?tmp: ????????????????????right?-=?1 ????????????????lst[left]?=?lst[right] ????????????????while?left?<?right?and?lst[left]?<=?tmp: ????????????????????left?+=?1 ????????????????lst[right]?=?lst[left] ????????????lst[left]?=?tmp ????????????return?left ????????if?left?<?right: ????????????index?=?find_index(lst,?left,?right) ????????????self.quit_sort(lst,?left,?index?-?1) ????????????self.quit_sort(lst,?index?+?1,?right)
//采用優(yōu)先隊列 重載為升序排列 typedef priority_queue<char,vector<char >,greater<char> > pq; pq slove() { string str = "900142"; priority_queue<char,vector<char >,greater<char> > que; int len = str.size(); //不將字符0 插入隊列 for(int i = 0;i < len;i++) { if(str[i] >= '1' && str[i] <= '9') { que.push(str[i]); } } //測試輸出 while(!que.empty()) { cout << que.top() << endl; que.pop(); } return que; }