21xrx.com
2024-09-20 01:13:58 Friday
登录
文章检索 我的文章 写文章
C++实现字符串去重
2023-07-12 01:48:23 深夜i     --     --
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,将每个字符插入到哈希表中。如果该字符已经存在于哈希表中,则删除该字符。最后,我们遍历哈希表,将所有字符拼成一个新的字符串。这样,我们就得到了去重后的字符串。

  
  

评论区

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