【发布时间】:2017-03-01 01:39:22
【问题描述】:
我想计算字符串s 中有多少个唯一且区分大小写的单词。到目前为止,我已经将标点符号转换为空格并将每个单独的单词(由空格分隔)添加到一个集合中。由于set 仅包含唯一元素,因此以下函数返回1。但是,它应该返回 2,因为字符串 s 有 2 个区分大小写的单词(ab 和 AB)。
如何检查字符串 s 中的单词是否区分大小写?
bool isWordSeparator(char c) {
return std::isspace(c) || std::ispunct(c);
}
int main() {
string s = "ab\nAB!ab?AB:ab.AB;ab\nAB";
transform(s.begin(), s.end(), s.begin(), [](char c)->char {
if (isWordSeparator(c))
return ' ';
});
istringstream iss(s);
set<string> words((istream_iterator<string>(iss)), istream_iterator<string>());
cout << "Number of Words: " << words.size() << endl;
return 0;
}
【问题讨论】: