21xrx.com
2024-12-22 23:11:55 Sunday
登录
文章检索 我的文章 写文章
C++字符串去重方法
2023-06-28 03:06:35 深夜i     --     --
C++ 字符串 去重 方法

在C++编程中,经常需要对字符串进行去重操作,以保证数据的唯一性和有效性。针对这种需求,本文介绍了几种常用的C++字符串去重方法,供读者参考和借鉴。

1.遍历去重法

遍历去重法是一种基于遍历的字符串去重方法,其基本思路是对字符串中的每一个字符进行遍历,利用哈希表或者数组等数据结构对出现过的字符进行标记,从而得到去重后的字符串。

示例代码:


#include <iostream>

#include <unordered_map>

using namespace std;

string removeDuplicates(string str) {

  unordered_map<char, int> countMap;

  string result = "";

  

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

    if (countMap[str[i]] == 0) {

      result += str[i];

      countMap[str[i]]++;

    }

  }

  

  return result;

}

int main() {

  string str = "ababcde";

  cout << removeDuplicates(str) << endl;

  // Output: abcde

  return 0;

}

2.快慢指针法

快慢指针法是一种基于指针的字符串去重方法,其基本思路是使用两个指针,一个快指针依次遍历字符串中的每一个字符,一个慢指针则记录每一个不重复的字符位置,当快指针遇到重复的字符时,再移动慢指针,从而达到去重的目的。

示例代码:


#include <iostream>

using namespace std;

string removeDuplicates(string str) {

  if (str.empty())

    return str;

  

  

  int slow = 0, fast = 1;

  while (fast < str.length()) {

    if (str[fast] != str[slow]) {

      str[++slow] = str[fast];

    }

    fast++;

  }

  

  return str.substr(0, slow+1);

}

int main() {

  string str = "ababcde";

  cout << removeDuplicates(str) << endl;

  // Output: abcde

  return 0;

}

3.STL去重法

STL去重法是一种基于STL库的字符串去重方法,其基本思路是使用STL中的unique函数和erase函数来去除字符串中的重复字符,从而达到去重的目的。

示例代码:


#include <iostream>

#include <algorithm>

using namespace std;

string removeDuplicates(string str) {

  if (str.empty())

    return str;

  

  

  auto iter = unique(str.begin(), str.end());

  str.erase(iter, str.end());

  

  return str;

}

int main() {

  string str = "ababcde";

  cout << removeDuplicates(str) << endl;

  // Output: abcde

  return 0;

}

总结

以上就是本文介绍的几种C++字符串去重方法,包括遍历去重法、快慢指针法和STL去重法,每一种方法都有其优缺点,读者可以根据实际情况进行选择和使用。此外,对于一些特定的字符串去重场景,也可以尝试自定义其他的去重方法来满足需求。

  
  

评论区

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