当前位置: 首页 > news >正文

算法|牛客网华为机试1-10C++

牛客网华为机试

文章目录

  • HJ1 字符串最后一个单词的长度
  • HJ2 计算某字符出现次数
  • HJ3 明明的随机数
  • HJ4 字符串分隔
  • HJ5 进制转换
  • HJ6 质数因子
  • HJ7 取近似值
  • HJ8 合并表记录
  • HJ9 提取不重复的整数
  • HJ10 字符个数统计

HJ1 字符串最后一个单词的长度

题目描述:
在这里插入图片描述
解题思路:
C/C++ 处理输入带空格的字符串的方法
使用getline()方法读入整行内容。再从后往前遍历,遇到第一个空格就停止,此时遍历了最后一个单词,输出对应的遍历的次数即可。

解法:

#include <iostream>
#include <string>
using namespace std;int main() {string s;getline(cin,s);int size = 0,i=s.length()-1;while (i>=0&&s[i]!=' ') {i--;size++;}cout<<size;return 0;
}

莫名其妙解法:
非常误导人,利用网页OJ,就是自动添加Ctrl+z结束符退出while循环,同时又利用了cin输入的机制和string覆盖机制。本地ide是无法退出循环的。
一个关于OJ判断输入结束的问题

#include <iostream>
using namespace std;int main() {string a;while (cin >> a);cout<<a.size();return 0;
}

HJ2 计算某字符出现次数

题目描述:
在这里插入图片描述
解题思路:
使用getline(cin, str)类方法来读取一行字符,使用cin.get()读取一个字符,使用std::tolower或std::toupper函数,这两个函数定义在头文件中,可以将字母转换为小写或大写再进行比较。
解法:

#include <iostream>
#include <cctype> // 包含转换字符的函数
using namespace std;int main() {string s;char c;// 使用getline(cin, str)类方法来读取一行字符getline(cin,s);// 使用cin.get()读取一个字符c = cin.get();int size = 0;// 全部转换为小写比较for(int i=0;i<s.size();i++){if(std::tolower(s[i]) == std::tolower(c)){size++;}}cout<<size;return 0;
}

HJ3 明明的随机数

题目描述:
在这里插入图片描述

解题思路:
【C++】详解 set | multiset
直接利用set的特性,没有重复的元素且为升序的。
解法:

#include <iostream>
#include <set>
using namespace std;int main() {int count = 0;cin>>count;int num;set<int> setint;for(int i=0;i<count;++i){cin>>num;setint.insert(num);}for(auto output:setint){cout<<output<<endl;}return 0;
}

HJ4 字符串分隔

题目描述:
在这里插入图片描述

解题思路:
C++|string字符串操作(切割,是否包含某个子串)
先比较size是否为8的整倍数,不是则后面补0,最后利用string字符串切割函数输出结果。
解法:

#include <iostream>
using namespace std;int main() {string str;cin>>str;if(str.size() <= 0)return 0;else if(str.size()%8!=0)str.append(8-(str.size()%8),'0');for(int i=0;i<str.size();i+=8)cout<< str.substr(i,8)<<endl;return 0;
}

HJ5 进制转换

题目描述:
在这里插入图片描述

解题思路:
C++进制转换
手动转换方法
C++|std::stoi函数
利用string自带的进制转换函数
解法:

#include <iostream>
using namespace std;int main() {string str;cin>>str;cout<<stoi(str,0,16)<<endl;
}

HJ6 质数因子

题目描述:
在这里插入图片描述

解题思路:
质因子,也称为素因子,是指一个数的因数中是质数的那些因数。质数是只能被1和它本身整除的大于1的自然数,例如2、3、5、7、11等。当我们将一个合数分解成几个质数的乘积时,这些质数就是这个合数的质因子。
从2开始一直除到除不尽避免4这种不是质因数的情况,同理2完了除以3,所有都除完了在打印最后剩下的质因子。
sqrt() 一个数的质因数最多只有一个超过它的算术平方根。

解法:

#include <iostream>
#include <cmath>
using namespace std;int main() {long n;cin >> n;for(long i = 2; i<=sqrt(n) && i<=n; ++i){// 一个数的质因数最多只有一个超过它的算术平方根while(n%i==0){//所有的质数前面全部除掉,后续就不会有合因子cout<<i<<" ";n/=i;   // 除掉质因子}}if(n-1) // 剩下的质因子cout<<n<<" ";return 0;
}

HJ7 取近似值

题目描述:
在这里插入图片描述

解题思路:
直接利用int类型的舍弃小数点后面值特性。
解法:

#include <iostream>
using namespace std;int main() {float num;cin>>num;int num_int = num;if(num-num_int>=0.5)cout<<num_int+1;elsecout<<num_int;
}

HJ8 合并表记录

题目描述:
HJ8 合并表记录

解题思路:
直接利用map特性,同样的key直接将value++。
解法:

#include <iostream>
#include <map>
using namespace std;int main() {int size;cin>>size;map<int,int> num_map;for(int i=0;i<size;++i){int a,b;cin>>a>>b;if(num_map.find(a)!=num_map.end()){ // 说明元素已经存在直接加数值num_map[a]+=b;}else{  // 不存在则直接赋值num_map[a] = b;}}for(auto iter:num_map){cout<<iter.first<<" "<<iter.second<<endl;}
}

HJ9 提取不重复的整数

题目描述:
在这里插入图片描述
解题思路:
用/10和%10获取单个元素,利用map没有重复元素向string插入数据,最后利用stoi将字符串转为int输出。
解法:

#include <iostream>
#include <map>
using namespace std;int main() {map<int,bool> is_output;int num;cin>>num;string res;for(int i=num;i>0;i=i/10){int key = i%10;if(is_output.find(key)==is_output.end()){res+=to_string(key);is_output[key] = true;}}cout << stoi(res) << endl;return 0;
}

HJ10 字符个数统计

题目描述:
在这里插入图片描述

解题思路:
利用map统计不重复的字符。
解法:

#include <iostream>
#include <map>
using namespace std;int main() {string str;cin>>str;map<int,bool> m;int size = 0;for (int i=0; i<str.size(); ++i) {int str_int = str.at(i);if(m.find(str_int) == m.end()){size++;m[str_int] = true;}}cout<<size;return 0;
}

http://www.mrgr.cn/news/55543.html

相关文章:

  • 程序员的浪漫之给对象爬数据,没想到过程中竟然被写接口的老哥字段命名给秀到了!
  • 开源运维软件适用性评估:多维度视角下的理性选择
  • es 全文文本分词查询
  • Jmeter简介
  • 什么是大数据分析:定义、优缺点、应用、机遇和风险
  • XV6 gdb调试使用
  • 拥抱云开发的未来:腾讯云数据库、云模板与AI智能化的应用场景探索
  • 大数据新视界 --大数据大厂之区块链技术:为大数据安全保驾护航
  • GEE引擎传奇UI界面修改教程
  • 【C Language】 运算符:按位运算符;逻辑运算符;关系运算符;条件运算符
  • 光伏工程造价单自动生成
  • CEEMDAN +组合预测模型(CNN-Transformer + ARIMA)
  • Markdown 简单实用的单词本格式编辑
  • Canal数据同步
  • 变换器交流模型建模方法
  • CCF-BDCI大数据与计算智能大赛TOP4-京东生鲜
  • 同济子豪兄--随机游走的艺术-图嵌入表示学习【斯坦福CS224W图机器学习】
  • 梦熊十三连测题解
  • 英语语法学习框架(考研)
  • STM32启动文件浅析
  • JavaScript 中的防抖和节流(简易版)
  • VSCode编译器改为中文
  • C语言中的内存函数
  • 没有网络限制!超简单本地部署 Llama3 的方法
  • MySQL-30.索引-介绍
  • Rat工具:vshell 4.9.3简单使用介绍