【华为机试】字符串处理
介绍一下牛客网——华为机试中的字符串内容,特别是一些常用库函数的使用
常用函数总结
字符串最后一个单词的长度
while(cin >> s);,只要有空格就能分隔开每次输入,所以最后一次输入就是最后一个单词
#include<bits/stdc++.h>using namespace std;int main() {string s;while(cin >> s);cout << s.size();return 0;
}
计算某字符出现次数
getline(cin, s);就能将cin输入到s中(cin会被空格影响隔开每次cin,但getline不会)
getchar()的返回值就是那个字符
tolower(ch) 转小写
使用到了count_if函数(count_if和count类似,区别在于第三个参数,count需要对应容器中的类型,而count_if可以是表达式)和lambda表达式
C++11 lambda表达式精讲
C++ lambda表达式与函数对象
#include <algorithm>
#include <iostream>
#include <string>using namespace std;int main()
{string s;getline(cin, s);char c = tolower(getchar());cout << count_if(s.begin(), s.end(), [c](char i) { return towlower(i) == c; }) << endl;
}
unsigned short int 其实等于 uint16_t;
类型的别名浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t
#include <iostream>
#include <string>using namespace std;int main()
{string s;getline(cin, s);char c = tolower(getchar());uint16_t n = 0;for (auto i : s) {if (tolower(i) == c) {++n;}}cout << n << endl;
}
出现次数理应想到map
#include <iostream>
#include <string>
#include <unordered_map>using namespace std;int main(int, char **)
{string s;char c;getline(cin, s) >> c;unordered_map<char, size_t> unorderedMap;for (auto i : s) {++unorderedMap[tolower(i)];}cout << unorderedMap[tolower(c)] << endl;
}