首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
摸鱼学大师
获赞
3986
粉丝
196
关注
10
看过 TA
669
男
复旦大学
2019
算法工程师
IP属地:上海
和but的刷题日记是好朋友!
私信
关注
拉黑
举报
举报
确定要拉黑摸鱼学大师吗?
发布(594)
评论
刷题
收藏
摸鱼学大师
关注TA,不错过内容更新
关注
2021-10-11 11:26
复旦大学 算法工程师
题解 | #删除字符串中出现次数最少的字符#
题目的主要信息: 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除 输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序 输入只包含26个英文字母 输入的字符串长度小于等于20个字节 方法一:暴力解法 具体做法: 我们可以利用vector中嵌套pair数组来记录字符及其出现的次数。遍历字符串,对每个字符在数组中查找是否出现过了,如果是直接在次数上加1,如果不是则在末尾添加这一项。完成以后,用重载的大小比较,按照出现次数排序,使之成为一个递增序。然后我们遍历这个数字,找到出现次数的次小值的下标,之后就是遍历字符串,每次遍历数组开始到次小值之间,查看该字符有无其在中,...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-11 10:38
复旦大学 算法工程师
题解 | #汽水瓶#
题目的主要信息: 规定:三个空汽水瓶可以换一瓶汽水,喝完之后的空汽水瓶可以继续换,如果最后剩两个空瓶,可以找老板借一瓶,喝掉后用三个空瓶换一瓶汽水还给老板 问有n个汽水瓶最多能喝多少瓶汽水 多次输入,最后一次输入是0,不处理 方法一:递归 具体做法: 我们整理一下,三个空汽水瓶可以换一个,喝掉后增加一个空汽水瓶,因此在n>=3n>=3n>=3的时候,相当于用两瓶空汽水瓶换一瓶喝的,而按照题目的意思最后剩余两瓶可以喝到一瓶,而最后剩余一瓶则不能喝到一瓶,因此可以递归解决。 #include<iostream> using namespace std; int ...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 21:23
复旦大学 算法工程师
题解 | #简单密码#
题目的主要信息: 给字符串加密,输入多个明文字符串,长度不超过100,输出多次密文 加密方式:数字不变,对于小写字母abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9,对于大写字母变成小写字母再后移一位(z后移是a),其他字符也不变 密码中没有空格 方法一:多次判断法 具体做法: 对于大写字母,我们利用加1取余的方式,加上ASCⅡ码的数字来变换,比如当前字符减去'A'就带着它是26个字母中的第几个(下标0开始),右移一位即加1,对26取模即循环,最后加上'a'转化为小写字母。 对于数字我们不变。 对于小写字母,利用...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 20:30
复旦大学 算法工程师
题解 | #密码验证合格程序#
题目的主要信息: 验证输入的密码是否符合要求,输入一组或者多组长度超过2的字符串,要求输出OK(符合要求)或者NG(不符合要求) 密码要求: 长度超过8位 包括大小写字母.数字.其它符号,以上四种至少三种 不能有相同长度大于2的子串重复 方法一:暴力验证 具体做法: 分三步依次检查上面的要求就行了。 首先检查输入的字符串长度,如果不大于8,输出NG,后面不用管; 准备一个长度为4的辅助数组,初始为0,遍历字符串,检查每种字符是否出现,如果出现则数组相应位置置为1,最后数组4个元素相加,如果小于3,还是输出NG,后面不用管; 最后我们要检查是否有相同长度大...
小鳄鱼学IT:
方法一中j不应该从i+3开始吧,比如输入02020abcA,这样的话j的初始位置为第二个2,且程序运行结果为OK。但实际第一个子串020和第二个子串020重复了,可能题目也没表达清楚,这种场景到底是OK还是NG。
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 19:14
复旦大学 算法工程师
题解 | #简单错误记录#
题目的主要信息: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号,及相同错误出现的次数 记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录 对相同的错误记录只记录一条,但是错误计数增加,最后一个斜杠后面的带后缀名的部分(保留最后16位)和行号完全匹配的记录才做算是”相同“的错误记录 输入的文件可能带路径,记录文件名称不能带路径,超过16个字符的文件名称,只记录文件的最后有效16个字符 循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现时间,仍以第一次为准。如果个超过8条的错误中第一条出现了它,最后一条也是它,不应该输出,以它是第一条出现的...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 17:04
复旦大学 算法工程师
题解 | #识别有效的IP地址和掩码并进行分类统计#
题目的主要信息: 给出多行字符串,每行都是"IP地址~掩码"的形式,统计A类地址、B类地址、C类地址、D类地址、E类地址、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开 IP地址类型如下: A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.255.255; E类地址240.0.0.0~255.255.255.255; 私网IP地址如下: 10.0.0.0-10.255.255.255 172.16.0...
哈哈哈嘎嘎嘎:
赞。 方法一没有判断子网掩码全为0的情况,加入if (ips[4] == 0) {++arr[5]; break;}
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 15:02
已编辑
复旦大学 算法工程师
题解 | #购物单#
题目的主要信息: 输入一个NNN和一个mmm,NNN表示现有的钱,mmm表示有mmm件物品,接着输入每件物品的价格、重要度、是否附属等信息 对于主件物品可以直接买,对于附件物品需要先购买主件才能购买附件,主件有0-2个附件 所有的价格,及金额都是10的整数倍 在不超过金额NNN元的情况下,使购买的每件物品的价格与重要度乘积的和最大,求这个最大值 方法一:动态规划 具体做法: 因为每个主件只有0-2个附件,且附件必须在买了主件的前提下,才能买,因此我们可以用3∗m3*m3∗m的数组保存价格和重要度与价格的乘积,第一维就是主件,第二三维是主件后面跟的附件,只有主件下标的元素才有值,附件下标的数...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-10 11:23
已编辑
复旦大学 算法工程师
题解 | #坐标移动#
题目的主要信息: 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动 从(0,0)点开始移动,从输入字符串里面读取一些坐标,并输出最终结果 输入的合法坐标为A(或者D或者W或者S) + 数字(两位以内),坐标之间以;间隔 非法坐标不操作 方法一:模拟 具体做法: 我们可以遍历输入的字符串,以分号为界限,利用substr函数分割成较小的坐标,放入数组中。然后我们设置坐标为(0,0)(0,0)(0,0),遍历字符串数组,对于每一个坐标首先检查其是否是空串或者长度是否在1到2之间,否则都是非法坐标,可以忽略。然后我们检查开头字母是否是ASDW中的一个,否则还是...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-09 19:04
复旦大学 算法工程师
题解 | #求int型正整数在内存中存储时1的个数#
题目的主要信息: 输入一个十进制int型整数,计算其二进制中1的个数 方法一:转化二进制 具体做法: 我们可以将十进制整数转化成二进制后,再统计二进制中1的个数,鉴于二进制位数较多,我们用字符串表示。采用连除法,对数字连续除2取余获取二进制每一位。然后遍历二进制字符串,得到二进制中1的个数。 #include<iostream> #include<string> using namespace std; int main(){ int n; cin >> n; int count = 0; string s = ""; while(n){ //十进制转化...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-09 18:29
已编辑
复旦大学 算法工程师
题解 | #字符串排序#
题目的主要信息: 给定n个字符串,对n个字符串按照字典序排列 第一行输入n,后面n行输入n个字符串 我们要知道的是,在C++中,直接对string型字符串做大小比较,是比较字典序,因为string类重载了大小比较符号。了解这个以后问题就迎刃而解了,我们将字符串当成数字,直接用排序算法就可以了。 方法一:冒泡排序 具体做法: 对字符串数组进行nnn次循环,每次都依次比较前后两个元素的大小,不断将字典序较小的字符串往前面移,最多移动nnn个循环,即可完成排序。 #include<iostream> #include<vector> #include<string&...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-09 16:35
复旦大学 算法工程师
题解 | #句子逆序#
题目的主要信息: 将一个英文语句以单词为单位逆序排放 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 方法一:两次反转 具体做法: 我们将输入的字符串拼接成一个完成的句子组成一个大的字符串s。 然后我们可以反转整个字符串s,得到了完全逆序的字符串,单词与单词之间确实是逆序了,但是单词内部也是逆序的,因此我们还要再遍历逆序后的字符串,以空格为界限,分割出单词,然后只对单词这部分进行反转,使之从逆序变成正序。 #include<iostream> #include<string> #include<algorithm> using na...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-09 16:08
已编辑
复旦大学 算法工程师
题解 | #字符串反转#
题目的主要信息: 输入一个只包含小写字母的字符串 输出该字符串反转后的字符串 方法一:逆序拼接 具体做法: 我们可以从后往前遍历字符串s,然后准备一个空串依次在其后面添加遍历到的字符,新串就是逆序字符串。 也可以直接逆序遍历字符串s,直接输出,我认为这样唯结果论是没有问题的,但是不符合题意要求的反转字符串。 #include<iostream> #include<string> #include<algorithm> using namespace std; int main(){ string s; cin >> s; string out...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-09 16:36
已编辑
复旦大学 算法工程师
题解 | #数字颠倒#
题目的主要信息: 输入一个int型整数 将其逆序由字符串的形式输出 若数字含有0,则逆序形式也含有0 方法一:逆序拼接 具体做法: 我们可以用除法每次先对数字用10取模获取数字最后一位,添加到字符串中,然后除10去掉最后一位,继续下一次操作。这样拼接出来的字符串就是逆序的,直接输出即可。 #include<iostream> #include<string> using namespace std; int main(){ int n; cin >> n; string s; while(n){ s += (n % 10 + '0'); //从后往前取...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-08 21:11
复旦大学 算法工程师
题解 | #playfair#
题目的主要信息: 用playfair加密信息:加密过程中的jjj都由iii来代替 playfair加密算法首先需要绘制密码表,密码表是一个5∗55*55∗5的矩阵,开始由密钥(key)按顺序排列,其余按照未出现的字母顺序 若密钥中含有重复字母需要将重复字母去掉,若有jjj用iii来代替 加密明文需要符合以下规则: 将明文中每两个字母组成一对,若成对后是两个相同字母或留下一个字母无法成对,则不进行变化直接放入密文中 明文对p1p2在同一行,对应密文对c1c2分别为紧靠p1p2右端的字母,最后一列右端对应第一列 明文对p1p2在同一列,对应密文对c1c2分别为紧靠p1p...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-08 20:01
复旦大学 算法工程师
题解 | #填数游戏#
题目的主要信息: 长为n的连续格子,要在格子里面填上1、2、3、4这四个数字 要求同一个偶数出现的次数也是偶数次,即2出现偶数次,4也要出现偶数次 求填充的方案种数,要对答案取模1e9+7 方法一:动态规划(超时) 具体做法: 我们可以用动态规划来表示,建立数组dp,其中: dp[i][0]dp[i][0]dp[i][0]表示填充长度为iii的格子,2出现偶数次且4出现偶数次的方案数,初始时一个格子有填充1或者3两种方案; dp[i][1]dp[i][1]dp[i][1]表示填充长度为iii的格子,2出现奇数次且4出现奇数次的方案数,初始时一个格子,没有填充方案; dp[i][2]dp[i...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
1
24
25
26
27
28
40
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务