21xrx.com
2024-09-20 00:10:31 Friday
登录
文章检索 我的文章 写文章
C++去重字符串算法
2023-07-04 21:08:23 深夜i     --     --
C++ 去重 字符串 算法

C++去重字符串算法:简洁高效的字符串去重方法

在C++中,去重字符串是一个常见的需求,比如在某些情况下需要统计字符串中不同字符的个数。但是如果使用朴素的方法,也就是遍历整个字符串,然后一个一个比较,效率会非常低下。因此,开发者需要采用更加高效的算法来实现去重字符串,这里介绍一种简洁高效的算法。

1.方法介绍

该算法的基本思想是利用unordered_set(哈希表)来存储每个字符是否出现过,如果出现过,则不在字符串中记录,如果没有出现过,则将其加入到字符串中。其中,unordered_set可以自动去重,且查找和插入的时间复杂度为O(1),因此可以大大提高字符串去重的效率。

2.实现步骤

(1)初始化unordered_set。

(2)遍历字符串,将每个字符插入到unordered_set中。

(3)最后将unordered_set中的元素依次拼接起来即可。

3.代码示例

下面是代码示例,使用了C++11的auto关键字和字符串流stringstream来进行字符串拼接,代码思路清晰,结构简洁,实现快捷。

 c++

#include<iostream>

#include<unordered_set>

#include<sstream>

using namespace std;

//去重字符串

string removeDuplicate(string s){

  unordered_set<char> sSet;

  stringstream ss;

  for(auto c:s){

    if(sSet.find(c)==sSet.end()){ //如果sSet中没有该字符

      sSet.insert(c); //加入到sSet中

      ss<<c;//写入字符串流中

    }

  }

  return ss.str();//将字符串流转化为字符串

}

int main(){

  string s="abcbabcabc";

  cout<<s<<" 去重后为:"<<removeDuplicate(s)<<endl;

  return 0;

}

运行结果为:


abcbabcabc 去重后为:abc

以上是一种简洁高效的C++去重字符串算法,可应用于大部分字符串去重场景,希望对读者有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复