面试刷题
尘埃飞舞
凡心所向,素履以往;
生如逆旅,一苇以航。
展开
-
HJ29 字符串加解密
描述1、对输入的字符串进行加解密,并输出。2、加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。3、解密方法为加密的逆过程。本题含有多组样例输入。输入描述:输入说明输入一串要加密的密码输入一串加过密的密码输出描述:输出说明输出加密后的字符输出解密后的字符思路一:常规思路,一个个判断#include <iostrea原创 2021-08-16 23:37:53 · 171 阅读 · 0 评论 -
NC15 求二叉树的层序遍历
描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]思路一:二叉树层遍历思路1:定义一个队列2:往队列中加入当前节点3:当队列不为空实时进行以下两个操作求出当前队列的长度len取出队列前len个节点,每取出一个节点,就把对应节点的左右孩子入队(前提左右孩子不为空)然后重复上面的过程/** * struct TreeNo原创 2021-08-16 16:29:38 · 94 阅读 · 0 评论 -
c++常见的排序表与复杂度
常见的排序及时间复杂度如下最常用的是插排,堆排,归并,快排是最重要的。选择排序是最简单但是最没用的。原创 2021-08-15 20:18:09 · 229 阅读 · 0 评论 -
HJ23 删除字符串中出现次数最少的字符
描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。注意每个输入文件有多组输入,即多个字符串用回车隔开输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。思路一:使用map用键值对的方法#include <iostream>#include <string>#include <map&g原创 2021-08-15 14:14:58 · 290 阅读 · 0 评论 -
HJ37 统计每个月兔子的总数
描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?本题有多组数据。输入描述:输入int型表示month输出描述:输出兔子总数int型思路一:这个第三个月是上面两个月的总和,是斐波那契数列。#include <iostream>using namespace std;int manageData(int n){ if(n<3) return 1; return mana原创 2021-08-15 11:42:02 · 170 阅读 · 0 评论 -
HJ21 简单密码
描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, t原创 2021-08-15 11:23:45 · 154 阅读 · 0 评论 -
HJ22 汽水瓶
描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手原创 2021-08-14 21:12:38 · 77 阅读 · 0 评论 -
HJ106 字符逆序
描述将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。输入描述:输入一个字符串,可以有空格输出描述:输出逆序的字符串思路一使用reverse进行字符串的翻转。#include <iostream>#include <string>#include <algorithm>using namespace std;//处理字符串// void manageStr(string str){// for(string c原创 2021-08-13 15:58:14 · 398 阅读 · 0 评论 -
HJ31 单词倒排
描述对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;输入描述:输入一行以空格来分隔的句子输出描述:输出句子的逆序思路一:使用栈的先进后出的特点,或者使用vector,之后逆序输出两种方式。#include <iostream>#include <原创 2021-08-13 10:48:11 · 102 阅读 · 0 评论 -
HJ15 求int型正整数在内存中存储时1的个数
描述输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入描述:输入一个整数(int类型)输出描述:这个数转换成2进制后,输出1的个数思路一:使用除余数的方法#include <iostream>#include <string>#include <bitset>using namespace std;int main(){ string str; int num = 0,result=0; cin&g原创 2021-08-12 12:14:48 · 58 阅读 · 0 评论 -
HJ14 字符串排序
描述给定n个字符串,请对n个字符串按照字典序排列。输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据输出n行,输出结果为按照字典序排列的字符串。思考一使用sort函数#include <iostream>#include <algorithm>#include <vector>#include <string>using namespace std原创 2021-08-12 11:40:30 · 196 阅读 · 0 评论 -
HJ13 句子逆序
描述将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符输入描述:输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。输出描述:得到逆序的句子思路一通过获取的字符串,单个字符串自己拼接#include <iostream>#include <string>using namespace std;int main(){ str原创 2021-08-12 10:56:51 · 113 阅读 · 0 评论 -
HJ12 字符串反转
描述接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入描述:输入一行,为一个只包含小写字母的字符串。输出描述:输出该字符串反转后的字符串。思路一:利用algorithm下面的reverse翻转字符串#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string str原创 2021-08-12 09:30:11 · 114 阅读 · 0 评论 -
HJ11 数字颠倒
描述输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序输出思路一:int类型用to_string转字符串,使用reverse翻转字符串#include <iostream>#include <string>#include <algorithm>using namespace std;int mai原创 2021-08-11 21:59:48 · 140 阅读 · 0 评论 -
HJ8 合并表记录
描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)思路一:使用无序的哈希表,unordered_map#include <iostream>#include <unordered_map>using namespace std;int main(){原创 2021-08-11 21:44:24 · 164 阅读 · 0 评论 -
HJ7 取近似值
描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。思路一:使用floor向下取整,以及ceil向上取整。#include <iostream>#include <math.h>using namespace std;int main(){ float num=0.0,dec=0.0; cin >> num; dec = num-int(num); if(d原创 2021-08-11 21:07:21 · 123 阅读 · 0 评论 -
HJ10 字符个数统计
描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。思路一:利用无序的set集合unordered_set#include <iostream>#include <string>#include <unordered_set>using namespace原创 2021-08-11 20:32:54 · 73 阅读 · 0 评论 -
HJ9 提取不重复的整数
描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。思路一使用哈希表的方式#include<iostream>#include<vector>#include<unordered_map>using namespace std;int main(){ int num,n;// vector<int> hash(10,0); //初始化哈希表 unorder原创 2021-08-11 19:21:32 · 101 阅读 · 0 评论 -
HJ6 质数因子
描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )最后一个数后面也要有空格。输入描述:输入一个long型整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。思路一:质数不会大于本身的根号,使用这个特质可以减少循环次数#include <iostream>#include <vector>#include <algorithm>#inclu原创 2021-08-11 14:33:11 · 161 阅读 · 0 评论 -
HJ5 进制转换
描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输入描述:输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。思路一:使用stoi直接将输入的转换为十进制输出。C++中stoi函数作用: 将 n 进制的字符串转化为十进制头文件:#include <string>原创 2021-08-11 10:45:50 · 256 阅读 · 0 评论 -
HJ3 明明的随机数
描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据(用于不同的调查),希望大家能正确处理)。注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。当没有新的输入时,说明输入结束。思路一:第原创 2021-08-10 20:49:54 · 210 阅读 · 0 评论 -
树的前序遍历、中序遍历、后序遍历详解
1.前序遍历对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。以上图为例,递归的过程如下:(1):输出 1,接着左孩子;(2):输出 2,接着左孩子;(3):输出 4,左孩子为空,再接着右孩子;(4):输出 6,左孩子为空,再接着右孩子;(5):输出 7,左右孩子都为空,此时 2 的左子树全部输出,2 的右子树为空,此时 1 的左子树全部输出,接着 1 的右子树;(6):输出 3,接着左孩子;(7):输出 5,左右孩子为空,此时 3 的左子树全部输出,3 的右子树为空,至转载 2021-07-01 09:30:23 · 21735 阅读 · 1 评论 -
《剑指Offer》——二维数组中的查找(JZ1)C++
文章目录前言题目:JZ1 二维数组中的查找一、暴力解法二、优化解法总结前言题目:JZ1 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。提示:以下是本篇文章正文内容,下面案例可供参考一原创 2021-06-24 21:58:01 · 191 阅读 · 1 评论