21xrx.com
2025-03-27 09:49:18 Thursday
文章检索 我的文章 写文章
C++实现字符串去重
2023-07-12 01:48:23 深夜i     12     0
C++字符串处理 去重 循环 指针操作 hash表

在C++编程中,字符串去重是一个常见的操作。所谓字符串去重,就是从一个字符串中删除重复的字符,只留下每个字符出现的第一个位置的字符。在C++中,有多种方式可以实现字符串去重,下面我们来看一下其中的一种。

首先,我们可以采用hash表来实现字符串去重。对于一个给定的字符串,我们可以先遍历字符串,将每个字符插入到一个哈希表中,如果该字符已经存在于哈希表中,则删除该字符。最后,遍历哈希表,将所有字符拼成一个新的字符串。

具体实现过程如下:

1.定义一个哈希表,用来存储字符。

2.遍历字符串,将每个字符插入哈希表中,如果该字符已经存在于哈希表中,则删除该字符。

3.遍历哈希表,将所有字符拼成一个新的字符串。

代码实现如下:

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
string removeDuplicates(string s) {
  unordered_set<char> hash; //定义哈希表
  //遍历字符串,将每个字符插入哈希表中
  for (int i = 0; i < s.size(); i++) {
    if (hash.count(s[i])) {
      s.erase(i, 1); //如果该字符已经存在于哈希表中,则删除该字符
      i--;
    }
    else {
      hash.insert(s[i]); //将字符插入哈希表中
    }
  }
  string result;
  //遍历哈希表,将所有字符拼成一个新的字符串
  for (char c : s) {
    result += c;
  }
  return result;
}
int main() {
  string s = "hello world";
  string result = removeDuplicates(s);
  cout << result << endl; //"helo wrd"
  return 0;
}

在这个例子中,我们定义了一个哈希表unordered_set ,用来存储字符。我们遍历字符串s,将每个字符插入到哈希表中。如果该字符已经存在于哈希表中,则删除该字符。最后,我们遍历哈希表,将所有字符拼成一个新的字符串。这样,我们就得到了去重后的字符串。

  
  

评论区

请求出错了