点击上方蓝字关注我,我们一起学编程
欢迎小伙伴们分享、转载、私信、赞赏。
H3C 笔试编程题。
微信搜索:编程笔记本
微信搜索:编程笔记本
微信搜索:编程笔记本
1. 星期匹配
题目描述:
输入一个字符串,判断这个字符串能否匹配星期一到星期日中的某一个或多个英文单词,输入的串不区分大小写。
示例:
- 输入:
m
,只有Mon
中含有m
。
输出:Mon
- 输入:
es
输出:Multi
,Tues
和Wednes
中均含有es
。 - 输入:
ab
输出:NotFound
,无法匹配字符串。
参考代码:
string dateMatch(string s)
{
vector<string> date = {"mon", "tues", "wednes", "thurs", "fri", "satur", "sun"};
int count = 0; // 匹配的日期数
string res;
string ans;
transform(s.begin(), s.end(), s.begin(), ::tolower); // 将待匹配的串转为小写
for (int i = 0; i < 7; ++i) {
if (date[i].find(s) != string::npos) {
++count;
res += date[i];
}
if (count >= 2) {
return "Multi";
}
}
if (count != 0) {
res[0] = res[0] - 'a' + 'A'; // 将匹配的星期首字母大写
return res;
}
return "NotFound";
}
2. 因子中位数
微信搜索:编程笔记本
微信搜索:编程笔记本
微信搜索:编程笔记本
题目描述:
求出给定整数所有因子的中间数。
示例:
- 输入:
9
输出:3
,因子为1 3 9
- 输入:
12
输出:4
,因子为1 2 3 4 6 12
参考代码:
1.求出所有因子存放在一个数组中,返回数组中间元素即可。(不推荐)
int midFactor(int n)
{
vector<int> factors;
for (int i = 1; i <= n; ++i) {
if (n % i == 0) {
factors.push_back(i);
}
}
return factors[factors.size() / 2];
}
2.直接求出平方根的值,从平方根开始搜索,第一个因子便是所要求的值。(推荐)
int midFactor(int n)
{
int sqrt_n = sqrt(n);
if (n == sqrt_n * sqrt_n) {
return sqrt_n;
}
for (int i = sqrt_n + 1; i <= n; ++i) {
if (n % i == 0) {
return i;
}
}
}
微信搜索:编程笔记本
微信搜索:编程笔记本
微信搜索:编程笔记本