An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case. 忽略大小写的区别
Example: (Input --> Output)
"Dermatoglyphics" --> true
"aba" --> false
"moOse" --> false (ignore letter case)
要点
- 先用
std::transform
和::toupper/::tolower
将字符转成统一的大小写形式. - 再将字符放入set中进行去重.
- 可改进的地方是对set的初始化: 不用插入
insert
, 而是用迭代器的方式初始化set.
std::set<char> set{ str.begin() , str.end() }
#include <string>
#include <algorithm>
#include <set>
bool is_isogram(std::string str) {
std::set<char> set{};
std::transform(str.begin() , str.end() ,str.begin(), ::toupper ) ;
for(auto e : str){
set.insert(e);
}
return set.size() == str.length() ;
}