![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网题目讲解
用清晰的思路和细致的代码为你讲解牛客网习题
Terence_Rain
这个作者很懒,什么都没留下…
展开
-
剑指offer之链表中倒数第k个节点
1.题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业原创 2021-07-05 17:33:30 · 50 阅读 · 0 评论 -
浪漫相遇——剑指offer之两个链表的第一个交点
1.题目描述输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为原创 2021-07-02 21:44:08 · 152 阅读 · 2 评论 -
剑指offer之第一个只出现一次的字符
1.题目描述在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.思路分析这个题目介绍两种解法,第一种是字符串操作,第二种是原创 2021-07-02 21:21:44 · 46 阅读 · 0 评论 -
动态规划解决连续子数组的最大和问题
1.题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业原创 2021-07-02 20:36:08 · 257 阅读 · 0 评论 -
迷津解惑 —— 剑指offer之转圈圈的顺时针打印矩阵元素
1.题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shun-shi-zhen原创 2021-07-01 21:18:24 · 96 阅读 · 0 评论 -
剑指offer之删除链表的节点
1.题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的原创 2021-06-30 21:12:17 · 64 阅读 · 0 评论 -
剑指offer之调整数组顺序奇数在偶数之前
1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof著作权归领扣网络所有。商原创 2021-06-30 19:47:40 · 50 阅读 · 0 评论 -
剑指offer之二叉树镜像
1.题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.解决思路这是一个二叉树问题,首先想到的就是使用递归去解决。从根节点开始,递归地遍历数组。将叶子节点进行左右翻转。递归退出的条件是root==null演示一下这个代码。原创 2021-06-30 17:51:53 · 42 阅读 · 0 评论 -
日常练习之锤爆java选择题
以下题目均来自牛客网,大家可以前往练习。1.下列类在多重catch中同时出现时,哪一个异常类应最后一个列出()A. ArithmeticExceptionB. NumberFormatExceptionC. ExceptionD. ArrayIndexOutOfBoundExceptionJava内置了丰富的异常体系,Exception异常类是上面其他选项的父类。在处理异常时,要处理具体的异常,如果捕捉不到。则依次捕捉父类异常。所以Exception最后列出。原创 2021-06-09 10:29:49 · 825 阅读 · 1 评论 -
题目描述简直妙极了之剑指offer用两个栈实现队列
小喵喵听了都说妙的题目哦原创 2021-06-08 16:17:21 · 55 阅读 · 0 评论 -
剑指offer之重建二叉树
原创不易,求点赞~~1.题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:2.思路分析这个题目出自剑指offer,也是一道非常经典的题目了。首先我们要知道二叉树遍历的特性。那么我们就可以看出来,前序遍历的第一个节点一定是根节点,对应的这个节点在中序遍历中,它在中序遍历位置中前边的原创 2021-06-07 23:45:05 · 129 阅读 · 5 评论 -
公共子串计算
1.题目描述给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。例如:输入:asdfaswerasdfaswer输出:62.思路分析这里要注意,这是最大公共子串,而不是公共子序列。这就要求,符合要求的元素之间都是连续的。我们用动态规划的思想来做题。针对一个状态F(i, j),i是第一个字符串的第i个元素,j是第二个字符串中的第j个元素。举一个例子:F(1, 1) = 0,因为第一个字符串的原创 2021-05-21 16:03:50 · 684 阅读 · 0 评论 -
字符串反转
1.题目描述接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)2.思路分析字符串反转是一个老生常谈的题了,解决的办法也是很多的。这里就介绍两种方法吧。1.使用StringBuffer。我们知道,StringBuffer中自带一个reverse方法。直接调用这个方法就行。这个思路的代码如下:import java.util.*;public class Main{ public static void main(String[] args){原创 2021-05-21 14:48:20 · 388 阅读 · 0 评论 -
汽水瓶
1.题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?2.思路分析这道题有一个取巧的做法,分析每次换的结果可以知道,他最后换到的汽水的数量就是他最先拥有的空瓶子空瓶子数原创 2021-05-21 10:58:49 · 216 阅读 · 0 评论 -
统计每个月的兔子总数
1.题目描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?2.思路分析这也是一个斐波那契数列问题。第一个月第二个月都只有1只兔子。从第三个月开始,开始累积。3.代码import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in原创 2021-05-20 17:08:42 · 148 阅读 · 0 评论 -
杨辉三角的变形
1.题目描述11 1 11 2 3 2 11 3 6 7 6 3 11 4 10 16 19 16 10 4 1以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。输入n(n <= 1000000000)本题有多组输入数据,输入到文件末尾,请使用while(cin&原创 2021-05-20 15:54:25 · 175 阅读 · 0 评论 -
整数加法
1.题目描述请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error2.思路分析这个题目输入的数据使用int 和 long接收都是不行的。可以使用BigInteger计算,但是这个做法就失去了题目的初衷。这里我们使用字符串来进行处理。使用一个字符串来接收测试用例,再使用split方法将这个字符串分成两步分保存在一个字符串数组中。然后写一个add方法,处理加法操作。在add方法中,首先要判断中输入的字符串是否合法,只有合法的字符串才能进行加法运算,否则就输出erro原创 2021-05-20 15:38:43 · 163 阅读 · 0 评论 -
确定两串乱序重构
1.题目描述给定string stringA和string stringB,编写程序确认两字符串包含的字符是否完全相同,注意大小写为不同字符,且考虑字符串中的空格,返回一个bool,代表两串是否由一样的字符组成。保证两串的长度都小于等于5000。2.思路分析本题有很多种做法。这里介绍两种。字符数组将两个字符串分别转换成两个字符数组针对两个字符数组,分别使用排序方法排序完后,比较两个字符数组是否相等(由于这个方法比较简单,就不写代码啦)使用哈希表先把两个字符串转换成字符数组遍历第一个字符原创 2021-05-17 16:02:11 · 56 阅读 · 0 评论 -
扑克牌大小
1.题目描述扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王)????3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR基本规则:(1)输入每手牌可能是原创 2021-05-17 15:50:47 · 225 阅读 · 0 评论 -
完全数计算
1.题目描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。输入n,请输出n以内(含n)完全数的个数。计算范围, 0 < n <= 500000本题输入含有多组样例。2.思路分析题目比较简单用两重循环,第一层是针对0~n中的每个数字,第二层循环自然是寻找这个数字的符合原创 2021-05-17 15:44:25 · 1567 阅读 · 0 评论 -
查找输入整数二进制中1的个数
1.题目描述输入一个正整数,计算它在二进制下的1的个数。2.思路分析这里我们需要用到位运算。举个例子,输入7,它的二进制是111。让它按位与1,看与后的结果是否为1,如果是1,计数一次。然后,111右移一位变成011,继续上一步操作,直至为0退出循环。3.代码import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(Sys原创 2021-05-14 14:55:16 · 143 阅读 · 0 评论 -
微信红包
1.题目描述春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。2.思路分析我们可以把这个题目这样来描述:给定一个数组,查找这和数组中出现次数超过数组长度一半的元素。这样一来,这个问题其实是个很简单的数组问题。我们的思路是这样的,1.对数组进行排序2.排原创 2021-05-14 14:31:17 · 70 阅读 · 0 评论 -
确定字符串互异
1.题目描述给定一个字符串string iniString,请返回一个bool值,True代表字符串的所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符且不允许使用额外的存储结构,字符串的长度小于等于3000。大小写字母算不同的字符。2.思路分析这个题目难度也不是很大,如果之前做过找出字符串中第一次只出现过一次的字符,那么对于这个题来说,稍微修修改改就可以了。其实就是遍历整个字符串,使用两个方法indexOf和lastIndexOf,如果某个字符只出现了一次,那么这两原创 2021-05-13 20:33:50 · 160 阅读 · 0 评论 -
计算日期到天数转换
1.题目描述根据输入的日期,计算是这一年的第几天。2.思路分析大家看到这个题应该是狂喜的(▽)!其实做法有挺多种的,比如用数组把每个月份的累计天数存着。这里我用switch解决,虽然代码有点长,但是思路简单明了。唯一注意的就是闰年时候2月有29天。3.代码import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(Syst原创 2021-05-13 19:54:26 · 232 阅读 · 0 评论 -
幸运的袋子
1.题目描述一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。2.思路分析1.对数组进行排序2.遍历数组,使用递归。当一个原创 2021-05-13 19:17:21 · 151 阅读 · 0 评论 -
参数解析
1.题目描述在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:\参数4: 字符串d:\请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:1.参数分隔符为空格2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” "d:“时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\pro原创 2021-05-11 09:53:23 · 205 阅读 · 0 评论 -
求最大连续bit数
1.题目描述求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。2.思路分析这个求解过程用语言描述不舒服,直接举例来看吧。比如对11进行求解。11的二进制表示:1011其中1的最大连续数为2.1.通过按位与运算判断最末尾的值是否是1,如果是1,计数器自增一次。这里1011末尾是1,所以计数器为1.2.左移一位,继续执行1操作1011左移一位是101,末尾还是1,计数器变成2.3.重复上面的过程,直到1011变成0这里需要注意,末尾是1原创 2021-05-08 19:42:04 · 224 阅读 · 0 评论 -
最近公共祖先
1.题目描述将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。2.思路分析拿到题目首先想,什么是满二叉树。满二叉树就是除了叶子节点,树中所有节点都有两个子节点。随便画一个满二叉树演示下:如图,这就是一个满二叉树。由于题目上已经说了根节点的编号为1,那么就可以用我上面图中的树进行演示。对于根节点编号为1的满二叉树,有这样一个重要的关系:parent = child / 2原创 2021-05-08 19:22:52 · 108 阅读 · 0 评论 -
机器人走方格
1.题目描述给定两个正整数int x,int y,代表一个x乘y的网格,现有一个机器人要从网格左上角顶点走到右下角,每次只能走一步且只能向右或向下走,返回机器人有多少种走法。保证x+y小于等于12。2.思路分析乍一看这个题目,和走方格的方案数是一样的,但是也是稍有不同。在走方格的方案数中,每次走的格子的线,本题中走的是格子的顶点。但是用到的思想是一模一样的,大家可以参考我的走方格的方案数这篇文章,看一下思路。代码只有一处是不同的,所以看完走方格的方案数,我想大家应该是可以触类旁通的。那么就直接原创 2021-05-08 17:51:04 · 117 阅读 · 0 评论 -
走方格的方案数
1.题目描述请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。2.思路分析题目输入n为横向,m为竖向。同时,走的时候只能是往右往下走。这里我们先看几个特殊情况:1.n == 1 && m == 1,即只有一个格子的情况。此时,满足要求的方案有两种,也就是n + m = 2。2.当有一行多列格子。也就是n == 1 && m >= 1.原创 2021-05-07 16:45:03 · 1992 阅读 · 0 评论 -
另类加法
1.题目描述给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。2.思路分析题目要求不能使用算数运算符进行加法操作,于是我们就想到了使用位运算符来解决问题。针对这个题目,这里有几条有用的结论。1.二进制位相异或的结果是对应位相加的结果(不考虑进位)例如1+2=32.二进制位相与后左移一位的结果是两个数相加进位后的结果也就是说2+1不用考虑进位,直接使用结论1就可以。3.两个数相加,如果不需要进位的话,那么两个数异或的值就是两个数的和。举个例子原创 2021-05-07 15:24:58 · 285 阅读 · 0 评论 -
把字符串转换成整数
1.题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回02.思路分析这个题的题目描述只有短短一句话,却暗含杀机。首先题目就说了不让用库函数,断了我们投机取巧的后路。在自己实现转换的时候还有难题,第一个,如何把用字符表示的量用整数表示呢,可能有朋友已经想到了,就是ASCII码表。如果这个字符是数字的话,就用ASCII的值与‘0’的ASCII的值做差,差值就是这个数字。那么新的问题出现了,如果当前遇到的不是数字怎么处理?对于当前字符不原创 2021-05-02 15:55:10 · 121 阅读 · 0 评论 -
不要二
1.题目描述小易有一个W*H的网格盒子。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根。小易想知道最多可以放多少块蛋糕在网格盒子里。2.思路分析看到这个题,首先不要被欧几里得距离吓住。仔细看一下题目,所谓欧几里得距离,就是:(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1原创 2021-04-30 15:16:52 · 108 阅读 · 1 评论 -
统计回文
1.题目描述给定两个字符串a , b,要求将b插入a中,然后判断插入后的字符串是不是回文,输出一共有多少种插法使得插入后的字符串是回文。2.思路分析题目很清晰,就是求有多少种满足要求的插法。我们可以先举个例子来看,假设给定的字符串a为:aba,给定的字符串b为:b。不考虑是否满足要求,一共就有4种插法,baba,abba,abba,abab很明显,插法就是字符串a的长度。接下来,针对每一种不同的插法,再去判断是否是回文。判断回文很简单,只需要把当前字符串逆置,看是否和原字符串相等即原创 2021-04-29 16:49:36 · 161 阅读 · 0 评论 -
连续最大和
1.题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3。2.思路分析题目很短,要我们去求最大的连续子数组的和。这个问题我们可以采用动态规划的思想来做。首先来分析一下,遍历整个数组,刚开始的时候,当然是下标为0的元素是子数组中和最大的。我们用sum来存储子数组的和,用max来存储最大子数组的和。显示,刚开始的时候,max=sum=arr[0]。给出状态方程:max( dp[ i ] ) = getMax( max( dp[ i原创 2021-04-29 08:57:24 · 199 阅读 · 0 评论 -
进制转换
1.题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。N>=2并且N<=16,如果给定的进制大于9,那么转化后的数字参考16进制的表示方法。如10用A表示,11用B来表示。2.思路分析N进制数,每个进制位的值分别是X0N0,X1N1, X2*N2…,X0,X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算。以给定十进制数7为例,二进制表达为111,在十进制下,有7 = 1 * 20 +原创 2021-04-27 20:44:06 · 75 阅读 · 0 评论 -
字符串中找出连续最长的数字串
1.题目描述读入一个字符串str,输出字符串str中的连续最长的数字串。2.输入输出示例给一个输入abc123nj5nk88990wze这里面最长的数字串是88990,并将其输出。3.思路分析1.首先输入是一个字符串,我们在处理的时候就要转化为字符来处理。2.开辟两个空的字符串,用cur和ret分别指向这两个空字符串。3.遍历整个输入的字符串,转化为字符,如果当前的字符不是数字的话,就继续遍历,如果遇到的是 数字,就放在cur中。4.继续遍历字符串,直到遇到下一个不是数字的字符,原创 2021-04-22 20:52:37 · 1877 阅读 · 0 评论 -
排序子序列
一、题目描述题目链接牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2。二、输入输出描述输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的原创 2021-04-22 12:53:34 · 118 阅读 · 0 评论 -
牛客网——倒置字符串
一、题目描述将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I二、思路分析首先我们可以将整个字符串进行逆置,然后转化为字符数组。再定义两个指针,一个start,一个end。首先start = end = 数组中第一个元素,在数组不越界的条件下end往后走,直达碰见空格,说明start和end就分别指向了一个单词的首尾,把这个单词再逆置就可以了。然后start指向end的下一位,也就是下一个单词的起点,再重复这样的过程。详细细节我们在原创 2021-04-20 23:23:17 · 212 阅读 · 0 评论 -
牛客网——删除公共字符
一、题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”二、输入输出和示例输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are students.aeiou输出Thy r stdnts.三、思路分析使用hashMap,遍历第二个字符串,将每一个字符作为key,如果当前map中没有这个key,那value原创 2021-04-15 23:33:07 · 224 阅读 · 0 评论