删除字符串中第一个重复的 指定字符的左边所有字符 函数总结

本文主要总结一个删除字符串中第一个重复的指定字符的左边所有字符函数,简单来说,就是比如字符串“abcbefg”,比如我要删除第一个重复字符'b'左边所有字符,也就是要删除字符串“abcbefg”中的字符“ab”,剩下的字符是“cbefg”。

该问题的解决方法,博主在leecode看到一个非常精妙的解法,代码如下:

int left = 0;
string s = {abcbdefg};
unordered_set<char> lookup = {abcb};

while (lookup.find(s[i]) != lookup.end())
{
    lookup.erase(s[left]); //依次从字符串左边开始删除,left下标,直到删除完第一个重复字符s[i]截止
    left ++; //依次向右取s字符串中的字符
}

上述代码中,集合查找函数unordered_set::find('b')找的是该字符串中,第一个出现字符'b'的迭代器标志,如果找到,则返回对应迭代器标志,否则返回unordered_set::end()。利用这个性质,可以依次删除集合左边的字符,直到找不到该字符,则说明删除了从左边到右边第一个指定字符内容。其中,删除函数unordered_set::erase('a')功能是删除字符集中第一个字符。

 

 

参考内容:

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai/(参考:删除指定字符左边所有字符)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值