确定字符串是否具有相同的字符
Determine If String Has All Same Character
是否有像find_first_not_of
这样的函数返回真或假而不是位置?我不需要位置,而是字符串是否包含所有相同的字符。
您可以编写自己的函数:
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_first_not_of
:
bool all_chars_same(string testStr) {
return testStr.find_first_not_of(testStr[0]) == string::npos;
}
仅检查find_first_not_of
对string::npos
的返回值:
// needs to check if str.size() > 0
bool all_same = str.find_first_not_of(str[0]) == string::npos;
或者,因为您正在寻找单个字符,也有std::all_of
。
bool all_same = std::all_of(str.cbegin(), str.cend(), [&](char c){ return str[0] == c; });
use yourstring.find(keyword);你可以在这里看到细节http://www.cplusplus.com/reference/string/string/find/
我推荐一个定义,这是更快的方法。
#define find_not_of(a) (a.find_first_not_of(a[0]) != std::string::npos)
最好的方法和最快的方法是创建一个映射,并把字符串的第一个值作为映射的键。然后遍历字符串,一旦找到一个不在映射中的字符,就完成了
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;
}
相关文章:
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将 NULL 与 C 的字符* 字符串一起使用
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法将常量字符字符串传递给模板类
- 如何组合一个宽字符字符串,中间插入一些空字符
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 从给定索引返回子字符字符串的函数
- 字符 [](c 字符串)的初始化标准
- 如何将字符字符串用作数学运算符
- 将 Unicode 字符/字符串写入文件
- C++,字符* 字符串修改
- 如何有效地用不同的整数元素替换字符字符串的元素
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- strcpy正在复制sth字符i字符串.如何解决此错误
- 在C++中将双精度转换为字符*/字符串
- C 中的宽字符字符串
- 如何提取C 中的字符/字符串之间的字符串
- 无法将字符/字符串转换为int
- 带有指针的反转字符字符串
- 反转字符串中的 n 个字符(字符串中没有空格),而不使用 c++ 中的内置函数