首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客804207695号
University of Illinois at Urbana-Champaign Java
发布于江苏
关注
已关注
取消关注
@林小白zii:
虾皮笔试 虾皮笔试题 0320
笔试时间:2024年03月20日 历史笔试传送门:2023秋招笔试合集 第一题 题目:有效的重复字符 给定一个经过编码的字符串,按照特定规则返回它解码后的字符串。编码规则为: k{string},表示大括号内部的 string 经过解码后重复 k 次,k 保证为正整数, string经过解码后为由a-z之间的字符组成的字符串,即大括号可能会有嵌套的情况。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的括号总是符合格式要求的。原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2{4}的输入,但是会出现像2{a3{b4{c}d}e}的情况。 样例输入一 "2{ac}" 样例输出一 "acac" 样例输入二 "2{ab3{ac}}" 样例输出二 "abacacacabacacac" 参考题解 简单的栈模拟。遇到数字则不断累加,遇到左括号则入栈,则清空之前积累的数字以及之前记录的字符串,遇到右括号则出栈,复制相应数量的字符串,遇到字符则添加至当前的字符串中。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <stack>#include <string>class Solution {public: std::string decodeString(const std::string& s) { std::stack<std::pair<std::string, int>> sk; int num = 0; std::string curString = ""; for (char c : s) { if (isdigit(c)) { num = num * 10 + (c - '0'); } else if (c == '{') { sk.push({curString, num}); curString = ""; num = 0; } else if (c == '}') { auto [lastString, cnt] = sk.top(); sk.pop(); std::string repeatedString; for (int i = 0; i < cnt; i++) { repeatedString += curString; } curString = lastString + repeatedString; } else { curString += c; } } return curString; }}; Java:[此代码未进行大量数据的测试,仅供参考] import java.util.Stack;public class Solution { public String decodeString(String s) { Stack<String> strStack = new Stack<>(); Stack<Integer> numStack = new Stack<>(); int num = 0; StringBuilder curString = new StringBuilder(); for (char c : s.toCharArray()) { if (Character.isDigit(c)) { num = num * 10 + Character.getNumericValue(c); } else if (c == '{') { strStack.push(curString.toString()); numStack.push(num); curString = new StringBuilder(); num = 0; } else if (c == '}') { String lastString = strStack.pop(); int cnt = numStack.pop(); StringBuilder repeatedString = new StringBuilder(); for (int i = 0; i < cnt; i++) { repeatedString.append(curString.toString()); } curString = new StringBuilder(lastString).append(repeatedString); } else { curString.append(c); } } return curString.toString(); }} Python:[此代码未进行大量数据的测试,仅供参考] class Solution: def decodeString(self, s) : # write code here sk = [] num = 0 cur_string = "" for c in s: if c.isdigit(): num = num*10 + int(c) elif c == "{": sk.append((cur_string, num)) cur_string = "" num = 0 elif c == "}": ls_string, cnt = sk.pop() cur_string = ls_string + cur_string*cnt else: cur_string += c return cur_string 第二题 题目:字符/数字卡片拼电话号码 幼儿园老师与小朋友做游戏,老师准备一个电话号码,幼儿从一叠识字卡片(每张卡片上有0~9,A~Z,a~z中的一个字母)中抽出任意(大于零)张卡片,顺序展示,然后进行如下操作:选择任意连续的若干张卡片,并将这些卡片按从小到大顺序排列。任意多次操作后,若所有卡片组成的字符串与老师展示的电话号码完全相同,则该幼儿游戏成功,输出1,否则失败,输出0,若有字母,返回-1,给出电话号码,及N个幼儿选择的卡片序列,预测此轮游戏的结果。 提示: 1、卡片总数足够多,且每个字母的卡片数足够多; 2、电话号码只包含数字,长度最少为3,最大为11; 样例输入 "119",["191","911","19","129","1A9"] 样例输出 [1,1,0,0,-1] 说明 191,选取第二、第三个字符91进行排序,得到19,整个字符串变为119,返回1 911,选取第一、第二个字符91排序,得到19,字符串变为191,继续选取第二、第三个字符91排序,得到19,整个字符串变成119,返回1 19,长度不匹配,不能匹配成功,返回0 129,包含字符2,不能匹配成功,返回0 1A9,包含字母,返回-1。 参考题解 核心思路是 检查字符串的相对位置。例如 "54213" 能否转换成 "13254" ,我们可以从最高位开始往前考虑,最后一位是4,那么我们如何将 54213得到呢?由于 5[4213]中,4往后的所有数字均小于4,所以可以不改变相对位置的前提下直接将4换到最后,于是可以得到"52134",如此我们继续考虑 "5213"能否转换成"1325"即可。 C++:[此代码未进行大量数据的测试,仅供参考] #include <iostream>#include <vector>#include <string>#include <unordered_map>#include <algorithm>class Solution {public: std::vector<int> sortSubStringToBuildPhoneNum(const std::string& phoneNum, const std::vector<std::string>& cardListArray) { int n = cardListArray.size(); std::vector<int> res(n, 0); for (int i = 0; i < n; ++i) { std::string card = cardListArray[i]; std::unordered_map<char, int> phoneCount, cardCount; for (char c : phoneNum) { phoneCount[c]++; } for (char c : card) {
点赞 0
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
不愿透露姓名的神秘牛友
07-29 17:45
mentor人太严格了,堪比军训
没想到碰到了这么棘手的mentor,每天他那么忙还能抽空监视👀我的行为,搞得我跟做贼一样!说说他平时啥样工位在mentor旁边,mentor会时不时歪头过来看我的屏幕是什么,或者看我在不在低头玩手机,工作进度逼的很近,上午布置的活下午就会问进度,如果做完了会直接给我➕新的工作内容下午1点半上班,1:40没醒,mentor会过来敲我桌子唤醒我基本没有landing时间,对我批评的内容,包括但不限于:我对你的期待很高,你看别的实习生xxx,一开始来上的需求比你还大,他怎么xxx,你怎么xxx。下班早点走(比如8点半)会问我这么早走干嘛去,我说工作做完了,他就会再给我找活做,让我加班到10点走怎么...
工作中哪个瞬间让你想离职
点赞
评论
收藏
分享
07-29 13:57
门头沟学院 Java
虾皮一面
收到的第一个周末面试的公司
虾皮信息一面364人在聊
点赞
评论
收藏
分享
06-30 19:02
华北电力大学(保定) 机器学习
接offer了,还是sp呢
码农索隆:
想看offer细节
点赞
评论
收藏
分享
07-25 11:49
已编辑
河北大学 Java
我又被卡背景了兄弟们
京东二面过了,因为空窗期被刷掉了美团二面过了,因位空窗期被刷掉了我顶不住了兄弟们,人生为何如此艰难啊,大厂我面了好多了,一轮又一轮,一茬又一茬,简历不断更新,技术不断全面,算法不断深化,面试官都很满意,最后给我干掉,我不甘心啊。
大佬们救救我8:
中国人不允许有gap
面试问题记录
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-31 17:06
华为实习一个月体验
华为暑期的评价在网络上不太好,个人觉得这个要根据个人的匹配度及部门而定,因为部门的分配是随机的,如果分配到了不喜欢的业务部门接触不到核心业务那确实会挺难受的,不过华为实习总体压力不大作为准备秋招的过渡实习也相当不错。主包个人还是挺幸运的,来到了和主包专业相当对口的部门,而且刚好最核心的项目缺人主包就无缝进来做这边的工作。部门的氛围也不错,经常和同事哥姐们一起吃饭聊八卦,项目的PM和主管也很重视我作为一个实习生的想法,属于受宠若惊了,实习体验良好。不过据我了解也有不喜欢相关业务的人过的不是很称心,不过华为这边实习负载不大,主包到现在只有一次八点下班,领过一次宵夜而已。
聊聊这家公司值得去吗
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7605
2
...
虾皮秋招一面
3359
3
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
3237
4
...
百度提前批 三面
2902
5
...
小鹏offer
1668
6
...
虾皮一面凉经
1500
7
...
被猿辅导挂了简历,但我想说...
1486
8
...
上班一周,工资还没拿,先欠公司两千
1389
9
...
最强本科✌
1374
10
...
大学四年,我感觉我像个“孤勇者”
1300
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29959次浏览
824人参与
#
秋招被确诊为……
#
164385次浏览
757人参与
#
中兴秋招
#
205989次浏览
2299人参与
#
工作中哪个瞬间让你想离职
#
63876次浏览
569人参与
#
你最希望上岸的公司是?
#
135333次浏览
706人参与
#
和同事相处最忌讳的是__
#
24616次浏览
244人参与
#
25届网易互娱暑实进度
#
78452次浏览
702人参与
#
虾皮求职进展汇总
#
249668次浏览
1863人参与
#
投格力的你,拿到offer了吗?
#
86899次浏览
584人参与
#
2022毕业即失业取暖地
#
102746次浏览
662人参与
#
2022毕业生求职现身说法
#
89325次浏览
700人参与
#
秋招OC许愿
#
327854次浏览
2450人参与
#
你最近一次加班是什么时候?
#
71032次浏览
350人参与
#
26届的你,投了哪些公司?
#
45999次浏览
500人参与
#
你的秋招第一面感觉怎么样
#
77003次浏览
592人参与
#
柠檬微趣工作体验
#
6775次浏览
40人参与
#
你遇到最难的面试题目是_
#
16807次浏览
201人参与
#
我对___祛魅了
#
49033次浏览
442人参与
#
地平线求职进展汇总
#
52683次浏览
370人参与
#
研究所VS国企,该如何选
#
194883次浏览
1819人参与
#
如果校招重来我最想改变的是
#
272005次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务