华为机试字符串处理
Posted KiraFenvy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试字符串处理相关的知识,希望对你有一定的参考价值。
字符串处理
介绍一下牛客网——华为机试中的字符串内容,特别是一些常用库函数的使用
常用函数总结
字符串最后一个单词的长度
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;
华为OD机试 2023最新 字符串重新排列字符串重新排序(C++ 100%)
文章目录
题目描述
给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出:
1、单词内部调整:对每个单词字母重新按字典序排序
2、单词间顺序调整:
1)统计每个单词出现的次数,并按次数降序排列
2)次数相同,按单词长度升序排列
3)次数和单词长度均相同,按字典升序排列
请输出处理后的字符串,每个单词以一个空格分隔。
输入描述
一行字符串,每个字符取值范围:[a-zA-z0-9]以及空格,字符串长度范围:[1,1000]
输出描述
输出处理后的字符串,每个单词以一个空格分隔。
用例
输入 | This is an apple |
输出 | an is This aelpp |
说明 | 无 |
以上是关于华为机试字符串处理的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 - 单词反转(JavaScript) | 机试题算法思路 2023
华为OD机试 - 数列还原(Python) | 机试题算法思路 2023
华为OD机试 - 端口合并(Python) | 机试题算法思路 2023