leetcode316 去除重复字母
时间:2021-09-05
本文章向大家介绍leetcode316 去除重复字母,主要包括leetcode316 去除重复字母使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
思路:
贪心 + 单调栈。
实现:
1 class Solution 2 { 3 public: 4 string removeDuplicateLetters(string s) 5 { 6 int n = s.length(); 7 stack<char> st; 8 vector<int> cnt(26, 0); 9 for (int i = 0; i < n; i++) 10 { 11 cnt[s[i] - 'a']++; 12 } 13 vector<bool> vis(26, false); 14 for (int i = 0; i < n; i++) 15 { 16 if (vis[s[i] - 'a']) { cnt[s[i] - 'a']--; continue; } 17 while (!st.empty() and s[i] <= st.top() and cnt[st.top() - 'a'] > 1) 18 { 19 cnt[st.top() - 'a']--; 20 vis[st.top() - 'a'] = false; 21 st.pop(); 22 } 23 st.push(s[i]); 24 vis[s[i] - 'a'] = true; 25 } 26 string res = ""; 27 while (!st.empty()) { res += st.top(); st.pop(); } 28 reverse(res.begin(), res.end()); 29 return res; 30 } 31 };
原文地址:https://www.cnblogs.com/wangyiming/p/15228920.html
- 安全退出app,activoty栈管理
- JavaBean转Map方法
- JsBridge实现JavaScript和Java的互相调用
- JAVA-FTP批量大文件传输
- 独家 | 一文读懂TensorFlow(附代码、学习资料)
- 解决openssh漏洞,升级openssh版本
- 解决NTPD漏洞,升级Ntpd版本
- 独家 | 手把手教TensorFlow(附代码)
- HBase Region自动切分细节
- eclipse搭建ssh后台
- 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)
- im4java包处理图片
- centOS7 mini配置linux服务器(五) 安装和配置tomcat和mysql
- RedisPool操作Redis,工具类实例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java自动化测试(参数化 19)
- Python 基础(一):入门必备知识
- Mac安装软件提示 已损坏【已解决】
- 机器学习之sklearn基础教程!
- 2020最新版 maven for MAC 安装及配置
- jemter安装(win/mac)并快捷启动的方法
- nmap 详解版-指令使用方法大全【含安装】
- 常见6种WAF绕过和防护原理
- 2020-mac 安装jdk1.8
- AWVS acunetix_WVS13的基础使用
- 为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?
- docker安装伏羲扫描器fuxi-scanner
- 基于深度学习的文本分类应用!
- 表驱动法
- mysql将表结构导出excel