牛客82035003号
牛客82035003号
全部文章
分类
题解(161)
归档
标签
去牛客网
登录
/
注册
牛客82035003号的博客
全部文章
(共16篇)
题解 | #最长回文子串#
首先单独设置计算回文子串长度的函数。从中间向外围扩散找到左右不等时的边界就可求出回文子串的长度。 以A[0]为起点找回文串,直到A[len-2],共检查len-1次。 每次从A[i]开始是否存在回文子串时,分别判断奇数形式aba和偶数形式abba是否存在,取二者的大者为本轮找到的最大回文...
字符串
双指针
2022-09-17
0
380
题解 | #翻转单词序列#
1.先整体反转。方法是用首尾指针交换两个元素并让指针向中间移动直到相遇。 2.再以单词为界局部反转。方法同样是首尾指针法,关键是找到左右边界,左边界是第一个不是空格的位置,用指针i做好标记,然后用另一个指针j继续遍历寻找第一个空格出现的位置,j-1即为右边界,如此一个一个单词反转。 voi...
C
字符串
双指针
2022-08-29
0
334
题解 | #二进制取反#
根据首元素是0还是1确定不同的边界。 首元素是0时,左边界为0,右边界为第一个出现的‘1’的下标再减1. 首元素为1时,继续遍历,左边界为第一个出现的‘0’的下标,当然也可能遍历完也没有出现,这就是全1的情况,已是最大,那么直接返回原数即可。 有0出现确定了左边界,那么继续遍历,第...
字符串
C
2022-08-25
0
325
题解 | #字符串变形#
1.先把整个字符串反转。 2.再从头开始遍历,找到单词起点记下,然后逐个字母转换大小写至这个单词末尾,然后根据单词首尾边界反转。 3.继续找下一个单词起点,以此类推 void reverse(char* s, int begin, ...
字符串
C
2022-08-23
0
384
题解 | #长度为 K 的重复字符子串#
长度为n的字符串有n-k个长度为k的子串,那么就遍历这n-k个子串看其中有没有重复的字母,只要有就计数,开始查看下一子串。 怎么判断是否有重复字母呢?因为字符串中全是小写字母,那么就用一个长度为26的数组来记录26个小写字母出现的次数。 每遍历一个子串,就把其中的字母出现次数...
C
字符串
计数
数组
2022-05-02
0
426
题解 | #压缩字符串(一)#
学习别人的优秀写法,能想到用log10(x)的真是人才! 用双指针,刚开始均指向第一个字母,然后开始比较,(每轮比较第一次比较的其实是同一个字母,第二次才是正式比较才决定要不要压缩) 如果后面指针所指元素和前面不同,说明前面字母只出现一次,那么在字符串中保留该字母,用新指针进行赋值。 ...
C
字符串
双指针
2022-05-01
0
561
题解 | #翻转单词#
所有单词都要翻转,那咱就一个个来翻嘛,每次找到一个单词的左右边界,然后用左右互换来翻转单词即可。 char* reverseWord(char* str ) { int left = 0,&...
C
字符串
双指针
2022-04-22
0
442
题解 | #二进制取反#
要使数值变大,就是把0换成1,但问题是要求在连续区间取反,不然全部把0换成1就必然是最大了,不过那没有意义。 连续区间取反的话,必然是将前面的0变成1更容易使数值变大,因为前面数的权值更大。 1.如果开头就是0,不管几个,那么只要找到从头开始的第一个1然后将其前面部分的0全部取反即可。比...
C
字符串
2022-04-21
0
688
题解 | #重复的子字符串#
如果重复,那么至少重复一次吧,字符串个数从1到len/2,均检查一遍,看是否是被重复的字符串 第一趟检查是否是第一个字符重复而形成的字符串 第二趟检查是否是前两个字符重复而形成的字符串 第三趟检查是否是前三个字符重复而形成的字符串 …… #include...
C
字符串
2022-04-15
0
456
题解 | #字符串的相邻字符去重#
用两个指针来比较元素,分别从下标为0和1开始。 1.若是两个元素一样,则左指针左移一位,右指针右移一位,继续比较,相当于用消消乐消去了这两个一样的元素。 2.若两个元素不一样,保留前者,检验后者,那么就要把两个指针都要往右移一位,继续比较下一组相邻的元素, 3.le...
C
字符串
2022-04-15
0
516
首页
上一页
1
2
下一页
末页