Reverse Words in a String
题目描述:
给定一个字符串,要求逆序字符串中的单词。
例子:
具体描述见LeetCode151
解题思路:
主要的思路是我们将字符串中的每个单词都逆序,然后整体全部逆序,这样就可以得到逆序单词的字符串序列了。需要注意的地方是我们需要判断边界和需要resize字符串的长度。
代码如下:
|
|
给定一个字符串,要求逆序字符串中的单词。
具体描述见LeetCode151
主要的思路是我们将字符串中的每个单词都逆序,然后整体全部逆序,这样就可以得到逆序单词的字符串序列了。需要注意的地方是我们需要判断边界和需要resize字符串的长度。
|
|
给定4个数字数组,要求分别从4个数组中各取一个数的组合中和为0的情况有多少种。
具体描述见[LeetCode454]
主要的思路是利用哈希表;我们取其中两个数组,然后利用其和为key,出现的次数为value构建哈希表;对剩下的两个数组也进行相同的操作;然后遍历第一个哈希表,在第二个哈希表中找到是否能够构成0的值;如果存在则对其次数进行乘积操作加到结果上。
|
|
给定一个字符串,要求判断这个字符串能否由其子串的整数倍连接而成。
具体描述见LeetCode459
根据题意我们可以知道子串的长度最少是1,最大是字符串的1/2。所以我们从1开始遍历到总长度的1/2;然后判断每个长度是否是符合条件即可。
|
|
给定一个计算机执行任务的数组(用’A’-‘Z’表示,且不必按照字母序执行),和一个执行相同任务的间隔n,表示执行相同两个任务之间最少需要有n个时间间隔,一个时间间隔内只能执行一个任务。
具体描述见LeetCode621
这边的思路主要是逆序的思维;我们找到所有字符任务中出现最多次数的字符,假设为A有7个;我们对6个A进行任务排序的情况下,不管其他字符是什么情况,我们最少需要的间隔是6 * n个字符;而后将剩下的最后一个A进行排序,因为其他的字符可能也是7个,所以需要找到剩下字符也是7个的字符个数将其加到最后结果中即可。这边需要注意的是,如果间隔是0的情况下:举个例子[“A”,”A”,”A”,”B”,”B”,”B”],间隔为0,根据以上计算过程得到的4;但是实际上需要的是6个,即再怎么排序得到的结果不会少于所有任务数。
|
|
给定一个字符串和数字k,要求逆序字符串中每2k字符的前k个,如果末尾剩下的字符超过k个,只逆序前k个;如果小于k个,则将其全部逆序。
具体描述见LeetCode541
本题的主要需要注意的地方在于如何判断当前是否到2k字符的末尾和如何处理剩下的字符。这边主要使用了cur作为遍历的index;遍历之间判断加上2k是否会超过字符的范围;然后在到达末尾的时候,判断末尾字符串的长度;根据不同的情况对字符进行逆序操作。其中定义了一个逆序函数用于每一步的逆序。
|
|
给定一个数组中包含时间的字符串,要求找到字符串中时间差最短的差值。
具体描述见LeetCode539
首先我们需要将字符串中的时间转化为分钟数;主要用到了substr和stoi函数;然后对转化后的数组进行排序;其中需要注意的地方是我们需要考虑数组中的最小值和最大值之间的差值,因为00:00和23:59之间的差值反而小;所以需要特别注意这两个数之间的差值。
|
|
给定一棵树的头结点,和插入行的深度depth和值value;要求在深度为depth的位置插入一行值为value的节点。
具体描述见LeetCode623
第一种想法是非递归的思路:我们可以通过按行遍历树的节点;然后找到需要插入节点的那一行的所有节点;然后遍历这些节点,不断增加新的节点和改变指针的指向即可。
|
|
|
|
给定一个源字符串s,和一个目标字符串t,要求找到s中所有的片段包含t的起始位置。
具体描述见LeetCode438
定义源和目标字符串的哈希表,因为只包含26个字母可以直接使用vector来保存字符和对应的数量;起始代码直接判断2个字符串的长度;然后遍历较短字符,保存下字符和对应的数量;这边需要注意如果开头就想同需要把0push;然后遍历长字符的字符,每增加一个字符,需要删除上一个字符对应的数量;然后进行判断是否相等。这边其实是维持了一个窗口,记录窗口中的字符的数量,是字符串中的常见做法,需要谨记!。
|
|
具体描述见LeetCode204
主要的思路是我们构建一个bool型的数组,假设全为true。在遍历到第i个数的时候,我们先判断这个数是否是小于sqrt(n)的结果,是的情况下,我们对这个找到的素数的整数倍位置都置为false;如果是true的情况下,在先前的数中已经判断过了所以无需再次判断。
|
|
给定一个字符串,要求返回该字符串中的单词的个数。
具体描述见LeetCode434
本题主要的思路是如何抓住说一个单词的确定情况,我们这边的想法是如果当前字符是空格,切前一个字符非空即为一个单词。但是对于末尾的单词而言;我们无法使用这个规则,所以取巧的方法是,我们在字符串的末尾加上一个空格,这样整个字符串的所有单词都可以使用这个规则来判断了。
|
|