程序设计(可用任何编程语言实现)
排序数字字符串的数字(升序),遇到0时从数字字符串中删除,如"1324”排序后应该为“1234”,”9002“排序后应该为”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)
//采用优先队列 重载为升序排列 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; }