21xrx.com
2024-11-22 08:05:47 Friday
登录
文章检索 我的文章 写文章
C++如何判断字符串是否全为同一字符
2023-07-04 22:59:26 深夜i     --     --
C++ 判断 字符串 同一字符

C++是一种强大的编程语言,它提供了许多实用的函数和工具来简化编程过程。其中一个常见的问题是如何判断一个字符串是否全为同一字符。在本篇文章中,我们将讨论一些解决这个问题的方法。

方法一:遍历字符串

一种简单而直接的方法是遍历整个字符串并检查其中的每个字符是否等于第一个字符。如果存在任何一个字符与第一个字符不同,则该字符串不是全由同一字符组成的。否则,该字符串就是由同一字符组成的。

下面是使用for循环实现的遍历字符串的代码:


bool isSameChar(string s) {

  if (s.length() == 0) return true;

  char first = s[0];

  for (int i = 1; i < s.length(); i++) {

    if (s[i] != first) return false;

  }

  return true;

}

该方法的优点是代码简单易懂,但是效率较低,因为它需要遍历整个字符串。

方法二:使用标准库函数

另一种方法是使用标准库函数,例如std::unique()。该函数将字符串中的所有相邻重复字符缩减到一个字符,然后返回指向新字符串尾部的指针。如果返回的指针与字符串的末尾相同,则说明字符串是由同一字符组成的。否则,字符串就不是由同一字符组成的。

下面是使用std::unique()实现的代码:


#include <algorithm>

bool isSameChar(string s) {

  auto it = std::unique(s.begin(), s.end());

  return (it == s.end());

}

该方法的优点是效率高,因为它利用了标准库函数的优势。但是它需要包含 头文件。

方法三:使用正则表达式

最后一种方法是使用正则表达式来检查字符串是否由同一字符组成。我们可以使用^和$来匹配字符串的开头和结尾,然后使用(.)\1*来匹配任意重复的字符。

下面是使用正则表达式实现的代码:


#include <regex>

bool isSameChar(string s) {

  std::regex r("^(.)\\1*$");

  return std::regex_match(s, r);

}

该方法的优点是代码简洁,但是需要包含 头文件。

总结

本文介绍了三种不同的方法来判断字符串是否全为同一字符。首先介绍了使用循环遍历字符串的方法,其次介绍了使用标准库函数std::unique()的方法,最后介绍了使用正则表达式的方法。这些方法都有各自不同的优缺点,在编写程序时需要根据实际情况进行选择。

  
  

评论区

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