21xrx.com
2024-12-22 23:53:53 Sunday
登录
文章检索 我的文章 写文章
C++字符串去重倒序实现
2023-06-27 17:23:16 深夜i     --     --
C++ 字符串 去重 倒序 实现

在C++中,字符串去重倒序是一种常见的处理操作。字符串去重是指去除字符串中重复出现的字符,而重复出现指的是在字符串中出现不止一次的字符。而字符串倒序则是将字符串中的字符按照相反的顺序排列。

实现C++字符串去重倒序并不难,可以先将字符串中的重复字符去除,然后再将剩余的字符按照倒序排列。下面是该算法的详细实现过程。

1. 去重

去重操作需要遍历整个字符串,使用一个哈希表来记录字符是否出现过。对于字符串s中的每个字符c,如果该字符不存在于哈希表中,就将其加入哈希表。如果该字符已经存在于哈希表中,说明该字符在字符串中重复出现,不需要加入结果字符串中。

2. 倒序

倒序排列可以使用双指针法,从字符串的首尾两端同时向中间遍历,将其交换即可。

下面是C++代码实现:


#include <iostream>

#include <string>

using namespace std;

string dedup(string s) {

  bool exist[256] = {false};

  string result = "";

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

    if (!exist[int(s[i])]) {

      result += s[i];

      exist[int(s[i])] = true;

    }

  }

  return result;

}

string reverse(string s) {

  int i = 0, j = s.size() - 1;

  while (i < j) {

    char temp = s[i];

    s[i] = s[j];

    s[j] = temp;

    i++;

    j--;

  }

  return s;

}

string dedupAndReverse(string s) {

  string result = dedup(s);

  return reverse(result);

}

int main() {

  string s = "aabbccddeeff";

  string dedupedAndReversed = dedupAndReverse(s);

  cout << dedupedAndReversed << endl; // prints "fefedcba"

  return 0;

}

这段代码首先调用了dedup函数来去重字符串,再调用reverse函数来倒序排列字符串。最后调用dedupAndReverse函数来得到最终结果。这段代码可以适用于任何字符串,包括包含空格、标点符号、大写字母等的字符串。

总之,C++字符串去重倒序是一个非常实用的操作,可以在很多场合被使用到。在实现代码时,需要注意字符串去重和字符串倒序的实现方法。代码中的哈希表和双指针法都是非常常用的数据结构和算法,值得我们在日常编程中学习和掌握。

  
  

评论区

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