假设我们有一个仅包含小写字母的字符串。我们必须删除所有重复的字母,以便所有字母仅出现一次。并且我们必须以最小的字典顺序显示结果。因此,如果输入像“ abccb”,那么结果将是“ abc”

为了解决这个问题,我们将遵循以下步骤-ans:=一个空字符串

定义一个堆栈st

在大小为26的onStack上定义一个数组

定义一张映射

n:= s的大小

用于初始化i:= 0,当i

用于初始化i:= 0,当i

从st删除项目

跳到下一个迭代,忽略以下部分

定义一个数组x = s,其大小为i

递减m [x] 1

如果onStack [x-'a']不为零,则

当st不为空且x

将x插入st

onStack [x-'a']:= true

当(st为空)为false时,执行-x:= st的顶部元素

从st删除项目

ans = ans + x

反转阵列转速

返回ans

示例

让我们看下面的实现以更好地理解-#include

using namespace std;

void print_vector(vector v){

cout <

for(int i = 0; i

cout <

}

cout <

}

class Solution {

public:

string removeDuplicateLetters(string s) {

string ans = "";

stack  st;

vector  onStack(26);

map  m;

int n = s.size();

for(int i = 0; i

m[s[i]]++;

}

for(int i = 0; i

char x = s[i];

m[x]--;

if(onStack[x - 'a'])continue;

while(!st.empty() && x

onStack[st.top() - 'a'] = false;

st.pop();

}

st.push(x);

onStack[x - 'a'] = true;

}

while(!st.empty()){

char x = st.top();

st.pop();

ans += x;

}

reverse(ans.begin(), ans.end());

return ans;

}

};

main(){

Solution ob;

cout <

}

输入项“abccb”

输出结果“abc”

C语言中删除重复字母,删除C ++中的重复字母相关推荐

  1. c语言中怎样删除字符串中的字母,删除字符串中的字符(C语言)

    题目: 编程序将给定字符串中指定字符删除.要求删除指定字符后原字符串不能留下空位置,字符串和指定字符均由键盘输入 基本思路 将字符串与要删除的字符进行比较,若为相同字符,则将字符串中的该字符替换为原字 ...

  2. C语言试题六十二之请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。

    1. 题目 请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除.形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母.在编写程序时,不得使用c语言提供的字符串函数. 比如 ...

  3. c语言去掉数组中重复的,C语言删除无序整型数组中的重复元素及时间复杂度

    数组重复的问题在任何编程中都会有碰到了,这里介绍C语言删除无序整型数组中的重复元素及时间复杂度,希望对各位有帮助. 遇到一个题,大概要求是写一个函数处理来去掉一个无序的整型数组(例如int i_arr ...

  4. 87.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

    87.假定输入的字符串中只包含字母和号.请编写函数fun,它的功能是:除了字符串前导的号之外,将串中其他*号全部删除.在编写函数时,不得使用C语言提供的字符串函数. 例如,若字符串中的内容为****A ...

  5. 6.3【字符数组编程】假定输入的字符串中只包含字母和*号。请编写子函数实现:除了字符串前导的*号之外,将串中其他*号全部删除。

    #include<stdio.h> #include<string.h> #define N 100 int main() {char st[N],s[N];int i,j,l ...

  6. 编写一个程序,实现将c语言源程序中的注释全部删除

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 6.编写一个程序,实现将c语言源程序中的注释全部删除 #include<stdl ...

  7. mysql删除重复文章标题_MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 一.查找重复记录 1.查找全部重复记录 2.过滤重复记录( ...

  8. mysql删除重复的判断_MySQL中查询、删除重复记录一共有多少种方法?

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as coun ...

  9. java——定义一个功能将ArrayList 集合中的重复元素删除(java集合七)

    定义一个功能将ArrayList 集合中的重复元素删除 ArrayList 集合中是允许储存重复元素的 import java.util.ArrayList; import java.util.Ite ...

  10. c++删除数组中重复元素_PG13中的功能—B树索引中的重复数据删除

    PostgreSQL 13 Beta 1版本于2020年5月21日发布,PostgreSQL 13 Beta 2版本于2020年6月25日发布.虽然Beta 版本中依旧包含一些错误,但是它总是几乎涵盖 ...

最新文章

  1. 158行Python代码复现:DeepMind提图像生成的递归神经网络DRAW
  2. 使用docker安装部署Spark集群来训练CNN(含Python实例)
  3. Python Django Cookie的设置和获取相关属性
  4. python spacy [E050] Can't find model 'en_core_web_sm'
  5. 吴恩达深度学习5.2练习_Sequence Models_Operations on word vectors
  6. apache添加php支持
  7. 编解码格式 -- AAC
  8. 在Windows server 2019 Core 版本上安装SQL2016
  9. 微信降级adb备份android7.0,微信自动帮你更新7.0了?简单两步轻松降级
  10. 暴风酷播云二期配置_暴风播酷云二期拆解
  11. 固定效应还是随机效应?
  12. 【TED ON FLEX】支持flashplayer的RIBBIT系统
  13. systemd 知:介绍
  14. 关于servlet和jsp的学习总结二(详细)
  15. Excel学习日记:L33-二八法则的神奇图表-柏拉图(帕累托图)
  16. QQmail Multiple Xss Vulnerabilities
  17. 桌面云服务器联想,联想云桌面系统助力四川大学搭建智慧课堂
  18. JS逆向加密——美团店铺详情_token参数
  19. IBM AppScan 安全扫描报告中部分问题的解决办法
  20. 服务器芯片能降低制程吗,主流移动芯片盘点 架构与制程决定成败

热门文章

  1. PTA——是不是太胖了
  2. 深度学习头像定位头像分割
  3. 5个拍出可爱宝宝的方法
  4. Laravel的env和config傻傻分不清?
  5. 微信小程序3-模板与配置
  6. 面向对象嵌入式系统开发7-嵌入式系统的实现
  7. nodejs图片处理(上传图片,复制图片,移动图片)
  8. 搭配emuc-b202 can卡通讯时,时断时续
  9. C++ | PaddleOCR GPU版使用步骤与测试时间对比(相对CPU)
  10. The Tennessee Waltz