牛客笔试题目1

【偶串】如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如"xyzxyz"和"aaaaaa"是偶串,但是"ababab"和"xyzxy"却不是。 牛牛现在给你一个只包含小写字母的偶串s,你可以从字符串s的末尾删除1个或者多个字符,保证删除之后的字符串还是一个偶串,牛牛想知道删除之后得到最长偶串长 度是多少。

输入描述:

输入包括一个字符串s,字符串长度length(2 ≤ length ≤ 200),保证s是一个偶串且由小写字母构成

输出描述:

输出一个整数,表示删除之后能得到的最长偶串长度是多少。保证测试数据有非零解

示例1: 输入abaababaab    

              输出  6

#include<iostream>
#include<string>
using namespace std;
bool isEven(string str)
{
	int len = str.size();
	int j = len / 2;
	int i = 0;
	for (; i < len / 2, j < len; i++, j++)
	{
		if (str[i] != str[j])
			return false;
	}
	return true;
}
int main()
{
	string str;
	cin >> str;
	int len = str.size();
	str = str.substr(0, len - 2);
	while (!isEven(str))
	{
		len = str.size();
		str = str.substr(0,  len- 2);
	}
	cout << str.size() << endl;
	return 0;
}

 

题目:

牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是"Y"或者"N",表示牛牛选择的数是否是i的倍数。例如,如果提示是"YYNYY",它表示这个数使1,2,4,5的倍数,但不是3的倍数。注意到一些提示会出现错误。例如: 提示"NYYY"是错误的,因为所有的整数都是1的倍数,所以起始元素肯定不会是"N"。此外,例如"YNNY"的提示也是错误的,因为结果不可能是4的倍数但不是2的倍数。现在给出一个整数n,表示已给的提示的长度。请计算出长度为n的合法的提示的个数。例如 n = 5:合法的提示有:YNNNN YNNNY YNYNN YNYNY YYNNN YYNNYYYNYN YYNYY YYYNN YYYNY YYYYN YYYYY所以输出12

输入描述:
输入包括一个整数n(1 ≤ n ≤ 10^6),表示已给提示的长度。
输出描述:
输出一个整数,表示合法的提示个数。因为答案可能会很大,所以输出对于1000000007的模
输入例子1:
5
输出例子1:
12

除1以外,每个位置上的数有以下几种情况:

1、如果质因子超过一个,则该位置上的字符是被唯一确定的。(这种情况下的数字都可以由几个素数或素数的K次幂而得)

                例如数字6:如果2,3为NY、YN、NN,则位置6上的字符为N;如果2,3为YY,则位置6上的字符为Y

                例如数字12:如果3,4为NY、YN、NN,则位置12上的字符为N,如果3,4为YY,则位置12上的字符为Y

2、只包含一个质因数的数字。可以按质因子分类,因为包含不同质因子的数不会相互影响,这样可以使用乘法原理计数。因为其它数字都可以由范围内的素数及其K次幂的位置的情况这些组合而来,所以我们只需要考虑范围内的素数及其K次幂的位置的情况。

               例如:n = 64 考虑2的次幂:

                         如果64是Y,那么32 16 8 4 2都要是Y;

          如果64是N,32是Y,16 8 4 2都要是Y;

       如果64 32是N,16是Y,8 4 2都要是Y;

       ...

       依次类推一共有7种情况

              因此,在小于n的范围内,一个素数若为a,它的幂有m个,那么有如下规律(第m个为a的m次幂):

 

第m个YNNNN
第m-1个YYNNN
...YYYNN
2YYYYN
1YYYYY/N

所以,对于素数a及其幂来说,共有m+1种组合。

将n以内每个质数的情况数相乘即得合法字符串的个数。

const int maxn = 1e6 + 5;
const int mod = 1e9 + 7;
int v[maxn];

int main() {
	int n;
	cin >> n;
	long long ans = 1;
	for (int i = 2; i <= n; i++) 
	{
		if (v[i]) continue;
		for (int j = 2*i; j <= n; j += i)
			v[j] = 1;
		int tmp = n, cnt = 0;
		while (tmp >= i)  //计算小于n的数中,i的幂的个数
		{
			tmp /= i;
			cnt++;
		}
		ans = ans * (cnt + 1) % mod;
	}
	cout << ans << endl;
	return 0;
}

题目: 

【制造回文】牛牛有一些字母卡片,每张卡片上都有一个小写字母,所有卡片组成一个字符串s。牛牛一直认为回文这种性质十分优雅,于是牛牛希望用这些卡片拼凑出
一些回文串,但是有以下要求:
1、每张卡片只能使用一次
2、要求构成的回文串的数量最少
牛牛想知道用这些字母卡片,最少能拼凑出多少个回文串。
例如: s = "abbaa",输出1,因为最少可以拼凑出"ababa"这一个回文串
s = "abc", 输出3,因为最少只能拼凑出"a","b","c"这三个回文串
输入描述:输入包括一行,一个字符串s,字符串s长度length(1 ≤ length ≤ 1000).
                s中每个字符都是小写字母
输出描述:输出一个整数,即最少的回文串个数。
示例1:
输入:abc
输出:3
 

#include<iostream>
#include<string>
using namespace std;



int main()
{
	int ch[26] = { 0 };
	string str;
	cin >> str;
	int ans = 0;
	for (int i = 0; i < str.size(); i++)
	{
		ch[str[i] - 'a']++;
	}
	for (int i = 0; i < 26; i++)
	{
		ch[i] %= 2;
	}
	for (int i = 0; i < 26; i++)
	{
		ans += ch[i];
	}
	if (ans == 0)
	{
		cout << 1 << endl;
	}
	else
	{
		cout << ans << endl;
	}
	return 0;

}

 

<think>嗯,用户这次明确询问华为牛客笔试的相关信息。从对话历史看,我之前已经整理了结构化信息回复,但用户再次提出相同需求,可能是需要更聚焦或补充内容。 用户可能正在准备华为笔试,属于求职关键期,情绪上可能有些焦虑。ta特意提到引用资料中的"作弊防范"和"题目类型",说明最关切的是考试公平性和备战方向。不过引用资料有些杂乱,需要提取有效信息。 我先快速扫描四个引用:引用1牛客严肃笔试的防作弊功能,引用2明确提到华为牛客题库特点——笔试比常规题库更难且偏向应用题,引用3强调题库专业性,引用4展示JavaScript题型示例。这些恰好构成完整链条:考试机制→题目特点→题库质量→具体题型。 需要重点强化用户最关心的两点:一是华为笔试的特殊性(应用题/抽象能力),二是实用备考建议。上次回复的"备考建议"部分可以更具体些,比如补充引用4中提到的输入输出处理技巧(ACM模式)。另外,用户没有说明应聘岗位,若能补充不同岗位的题型差异会更有价值。 注意到引用2和4都涉及编程语言(JavaScript),但用户未指定语言,回复中需保持技术中立。最后要强调防作弊功能对考试公平性的意义,呼应引用1和3的核心价值。 </think>根据站内引用信息和公开资料,华为在牛客平台的笔试相关信息可总结如下: ### 一、笔试核心特点 1. **题目设计导向** - 笔试题目注重**实际场景应用能力**,相比常规算法题库(如LeetCode)更强调问题抽象能力 - 题型包含大量**综合应用题**,需从业务场景中提取算法模型(引用[2]) - 典型题型示例:链表操作(反转/合并)、字符串处理、数学建模等(引用[2][4]) 2. **技术实现要求** - 支持多语言环境:JavaScript(V8)、Java、Python等 - **特殊输入输出处理**:需按牛客ACM模式规范(如JavaScript使用`readline()`获取输入)(引用[4]) - 高频考点: ```javascript // JavaScript V8输入处理示例 while(line = readline()) { let nums = line.split(' ').map(Number) // 解题逻辑... print(result) } ``` 3. **防作弊机制** - 启用**严肃笔试系统**:摄像头监考+屏幕录制+行为异常检测(引用[1][3]) - 题库配备**动态难度调整**与**题目乱序**功能(引用[3]) ### 二、备考建议 1. **能力提升重点** - 强化**场景抽象能力**:练习将实际问题转化为数据结构模型(引用[2]) - 掌握核心算法: - 链表操作(反转/环检测) - 字符串处理(逆序/匹配) - 数学计算(最小公倍数/四舍五入) 2. **平台适应性训练** - 熟悉牛客ACM模式输入输出规范(引用[4]) - 建议在牛客题库分类中针对性练习: ```markdown 华为真题路径:牛客题库 > 公司真题 > 华为 > 笔试算法题(简单/中等/难) ``` ### 三、注意事项 1. **笔试有效性** - 需提前测试设备兼容性(摄像头/浏览器插件) - 禁止多屏幕操作,系统会检测异常切屏(引用[1][3]) 2. **题库动态更新** - 华为题库每年迭代30%以上新题型,建议关注近期真题(引用[3]) > 参考资料:华为近年常考链表反转题解示例 > ```python > def reverse_list(head): > prev = None > while head: > next_node = head.next > head.next = prev > prev = head > head = next_node > return prev > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值