LintCode "Delete Digits"
2015-10-05 01:14
330 查看
Greedy: remove earliest down-edge: like "54", "97".
class Solution { public: /** *@param A: A positive integer which has N digits, A is a string. *@param k: Remove k digits. *@return: A string */ string DeleteDigits(string A, int k) { size_t n = A.size(); int cnt = 0; int i = 0; while(i < n - 1) { if(A[i] > A[i + 1]) { A.erase(i, 1); if(i > 0) i--; n --; if(++cnt == k) break; } else { i ++; } } if(cnt < k) // all ascending, remove last { n = A.size(); A = A.substr(0, n - (k - cnt)); } // Remove leading 0s i = 0, n = A.size(); while(i < n && A[i] == '0') i ++; A = A.substr(i); if(A.empty()) A = "0"; return A; } };
相关文章推荐
- Leetcode Word Search
- HDU 1213
- 【转】hadoop中map和reduce的数量设置问题
- 机器学习笔记 线性判别分析(中)
- Freescale Yocto Project搭建
- 原子操作 vs 非原子操作
- HDU 5135 Little Zu Chongzhi's Triangles (2014年广州赛区现场赛I题)
- CSS样式----图文详解(二):css属性
- 1041. 考试座位号(15)
- JNI字符串转字节数组指针方法
- 项目管理-成本管理
- Ubuntu 15.04趟坑笔记
- 解题报告 之 ZOJ 3329 One Person Game
- 字符串操作函数
- 掌握VS2010调试 -- 入门指南
- Nginx 引入线程池
- Leetcode那点事儿
- already defined in *.obj 的问题额解决方法
- Ubuntu "肉鸡" 记
- MPMoviePlayerController 电影播放器—IOS开发