确定String是否具有所有相同的字符

时间:2016-10-26 03:34:42

标签: c++

是否有类似find_first_not_of的函数返回true或false而不是位置?我不需要该位置,而是该字符串是否包含所有相同的字符。

5 个答案:

答案 0 :(得分:1)

您可以编写自己的函数:

A

或使用内置的bool all_chars_same(string testStr) { char letter = testStr[0]; for (int i = 1; i < testStr.length(); i++) { if (testStr[i] != letter) return false; } return true; }

find_fist_not_of

答案 1 :(得分:1)

只需检查find_first_not_ofpom.xml返回的值:

// needs to check if str.size() > 0
bool all_same = str.find_first_not_of(str[0]) == string::npos;

或者,既然您正在寻找单个角色,那么string::npos也是如此。

bool all_same = std::all_of(str.cbegin(), str.cend(), [&](char c){ return str[0] == c; });

答案 2 :(得分:0)

使用yourstring.find(keyword); 你可以在这里得到细节 enter image description here

答案 3 :(得分:0)

我会推荐一个定义,这是更快的方式。

#define find_not_of(a) (a.find_first_not_of(a[0]) != std::string::npos)

答案 4 :(得分:-1)

我能做的最好的方法和最快的方法是创建一个映射,并将字符串的第一个值作为映射的键。然后遍历字符串,一旦找到一个不在地图中的字符,就可以完成

 bool allSameCharacters ( string s){
  unordered_map < char , int> m;
  // m.reserve(s.size());
  m[s[0]]++;
  for (char c : s ){
    if (m.find(c) == m.end()) return false;
  }
  return true;
}