21xrx.com
2024-12-22 22:30:09 Sunday
登录
文章检索 我的文章 写文章
C++字符串去重方法分享
2023-07-06 17:52:03 深夜i     --     --
- C++ - 字符串 - 去重 - 方法 - 分享

C++ 是一门广泛使用的编程语言,在日常开发中处理字符串是常见的任务。处理字符串时,有时候需要去除字符串中的重复字符,本文将介绍 C++ 中的字符串去重方法。

字符串去重方法:

方法一:使用 set 数据结构

set 是 C++ 中的一个数据结构,它可以去除重复的元素。通过将每个字符放入 set 中,最终可以获取到去重后的字符串。


string str = "aabbcdeeff";

set<char> s(str.begin(), str.end());

string result(s.begin(), s.end());

方法二:使用数组标记

可以使用一个长度为 256 的布尔型数组(字符代码值范围在 0~255 之间),对每个字符出现的情况进行标记。标记过程中,如果某个字符已经标记为出现过,则将该字符在原字符串中的对应位置替换为空格(或其他字符),从而达到去重的效果。


string str = "aabbcdeeff";

bool flag[256] = {false};

string result="";

for(int i=0; i<str.size(); ++i){

  if(!flag[int(str[i])]){

    flag[int(str[i])] = true;

    result += str[i];

  }

}

方法三:使用哈希表

哈希表也是一种去重的高效方法。使用一个哈希表存储已出现的字符,每次遍历字符时,判断该字符是否已经出现过,如果没有,则添加到该哈希表中,否则舍弃该字符。


string str = "aabbcdeeff";

unordered_map<char,int> hashmap;

string result = "";

for(int i=0; i<str.size(); ++i){

  if(!hashmap.count(str[i])){

    hashmap[str[i]] = 1;

    result += str[i];

  }

}

结语:

通过 set 数据结构、数组标记和哈希表等方法,可以轻松实现字符串去重的功能。针对不同的情况,可以根据实际需要选择不同的方法。在 C++ 开发中,去重是一个常见的任务,设计高效的算法可以提高开发效率。

  
  
下一篇: C++的求模运算

评论区

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