是否有类似find_first_not_of
的函数返回true或false而不是位置?我不需要该位置,而是该字符串是否包含所有相同的字符。
答案 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_of
为pom.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)
答案 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;
}