delete k number to get the smallest int

Given a number, can you remove k digits from the number so that the new 
formatted number is smallest possible.

input: n = 1432219, k = 3
output: 1219

思想:贪心算法,查找规律

代码:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. string deleteKNumber(string &str,int k) {
  5. string::iterator start;
  6. bool flag = false;
  7. for(int i=k;i>0;i--) {
  8. flag = false;
  9. for(start = str.begin();start<str.end()-1;++start) {
  10. if(*start > *(start+1)) {
  11. str.erase(start);
  12. flag = 1;
  13. break;
  14. }
  15. }
  16. if(!flag) {
  17. str.erase(str.end()-i,str.end());
  18. break;
  19. }
  20. }
  21. return str;
  22. }
  23. int main() {
  24. string data="12469823859";
  25. cout<<deleteKNumber(data,2)<<endl;
  26. return 0;
  27. }
posted @ 2014-10-05 21:22  purejade  阅读(148)  评论(0)    收藏  举报