316. Remove Duplicate Letters
2016-04-15 13:09
218 查看
我一直以为本题复杂度要求为O(n),实际上,解法复杂度为O(n*n)的代码也可AC。
代码如下:
代码如下:
char* removeDuplicateLetters(char* s) { char *ret = (*char) malloc(sizeof(char)*27); int counts[26] = {0}; bool used[26] = { 0}; int len = 0; for(int i=0;s[i]!='\0';++i) { if(used[s[i]-'a']==true) continue; counts[s[i]-'a']--; int j = len-1; for(;j>=0;--j) { if(ret[j]>s[i]&&counts[s[j]-'a']>0) used[s[j]-'a']=false; else break; } len = j+1; ret[len++] = s[i]; used[s[i]-'a'] = true; } ret[len] = '\0'; return ret; }
相关文章推荐
- List泛型集合常用方法
- vim 命令行合集
- S7协议
- 神经网络学习笔记-问题记录(一)
- 代码优化他人理解
- ROS 下navigation/robot_pose_ekf编译报错
- scala+play2.2.2+slick2.0.2 + mysql5.0整合之一---基础环境搭建篇
- spark读取elasticsearch中的多个index
- fatal error: curses.h: No such file or directory
- 菜鸟网址导航
- jQuery笔记
- 进程的状态
- 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用。
- 【Qt】按钮键
- getelementbyid属性与用法
- 【NodeJs】使用TCP套接字收发数据的简单实例
- Android中Bitmap,byte[],Drawable相互转化
- sql中date数据处理
- HTTP方法 谓词 及在nginx中如何关闭(limit_except) 【转】
- FZU 2093 找兔子 状压DP