21xrx.com
2024-11-25 05:16:45 Monday
登录
文章检索 我的文章 写文章
如何在C++中判断一个字符串是否存在重复字符
2023-07-05 00:22:41 深夜i     --     --
C++ 判断 字符串 存在 重复字符

在C++程序中,判断一个字符串中是否存在重复字符是一个常见的问题。这个问题的解决方法有很多,但是其中一种比较简单的方法是使用哈希表。

哈希表是一种数据结构,它通过将每个元素映射到一个唯一的地址来实现快速查找。在本问题中,我们可以将每个字符映射到哈希表中,并检查是否已经在哈希表中出现过。

下面是这个问题的解决方案的代码实现:


#include <iostream>

#include <unordered_map>

#include <string>

bool hasDuplicateChars(std::string str) {

  std::unordered_map<char, int> hashMap;

  for(char c : str) {

    if(hashMap[c] > 0)

      return true;

    

    ++hashMap[c];

  }

  return false;

}

这个函数的工作原理很简单。我们首先创建一个空的哈希表 `hashMap`,然后遍历字符串 `str` 中的每个字符。对于每个字符,我们检查它是否已经在哈希表中出现过。如果是,那么说明字符串中存在重复字符,我们就可以返回 `true`。否则,我们将这个字符添加到哈希表中。

在这个函数中,我们使用了 C++11 中的 `unordered_map` 类来实现哈希表。这个类被设计为可以快速地插入、查找和删除元素。它通过一个哈希函数将每个元素映射到一个唯一的地址,在常数时间内执行这些操作。

现在让我们使用这个函数测试一个字符串是否存在重复字符:


int main() {

  std::string str1 = "hello";

  std::string str2 = "world";

  std::string str3 = "abcd";

  std::cout << hasDuplicateChars(str1) << std::endl; // true

  std::cout << hasDuplicateChars(str2) << std::endl; // false

  std::cout << hasDuplicateChars(str3) << std::endl; // false

  return 0;

}

在这个例子中,我们使用了三种不同的字符串,其中仅有 `str1` 中存在重复字符,因此我们的函数会返回 `true`,而对于另外两个字符串,它们都没有重复字符,因此函数会返回 `false`。

总结一下,使用哈希表是一种有效的方法,在C++中判断一个字符串中是否存在重复字符。这个方法的实现非常简单,还可以更改来满足不同的需求。

  
  

评论区

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