牛客82035003号
牛客82035003号
全部文章
题解
归档
标签
去牛客网
登录
/
注册
牛客82035003号的博客
全部文章
/ 题解
(共12篇)
题解 | #长度为 K 的重复字符子串#
长度为n的字符串有n-k个长度为k的子串,那么就遍历这n-k个子串看其中有没有重复的字母,只要有就计数,开始查看下一子串。 怎么判断是否有重复字母呢?因为字符串中全是小写字母,那么就用一个长度为26的数组来记录26个小写字母出现的次数。 每遍历一个子串,就把其中的字母出现次数...
C
字符串
计数
数组
2022-05-02
0
435
题解 | #压缩字符串(一)#
学习别人的优秀写法,能想到用log10(x)的真是人才! 用双指针,刚开始均指向第一个字母,然后开始比较,(每轮比较第一次比较的其实是同一个字母,第二次才是正式比较才决定要不要压缩) 如果后面指针所指元素和前面不同,说明前面字母只出现一次,那么在字符串中保留该字母,用新指针进行赋值。 ...
C
字符串
双指针
2022-05-01
0
575
题解 | #翻转单词#
所有单词都要翻转,那咱就一个个来翻嘛,每次找到一个单词的左右边界,然后用左右互换来翻转单词即可。 char* reverseWord(char* str ) { int left = 0,&...
C
字符串
双指针
2022-04-22
0
454
题解 | #二进制取反#
要使数值变大,就是把0换成1,但问题是要求在连续区间取反,不然全部把0换成1就必然是最大了,不过那没有意义。 连续区间取反的话,必然是将前面的0变成1更容易使数值变大,因为前面数的权值更大。 1.如果开头就是0,不管几个,那么只要找到从头开始的第一个1然后将其前面部分的0全部取反即可。比...
C
字符串
2022-04-21
0
701
题解 | #重复的子字符串#
如果重复,那么至少重复一次吧,字符串个数从1到len/2,均检查一遍,看是否是被重复的字符串 第一趟检查是否是第一个字符重复而形成的字符串 第二趟检查是否是前两个字符重复而形成的字符串 第三趟检查是否是前三个字符重复而形成的字符串 …… #include...
C
字符串
2022-04-15
0
468
题解 | #字符串的相邻字符去重#
用两个指针来比较元素,分别从下标为0和1开始。 1.若是两个元素一样,则左指针左移一位,右指针右移一位,继续比较,相当于用消消乐消去了这两个一样的元素。 2.若两个元素不一样,保留前者,检验后者,那么就要把两个指针都要往右移一位,继续比较下一组相邻的元素, 3.le...
C
字符串
2022-04-15
0
533
题解 | #字母异位词的长度#
用两个长度为26的数组分别记录两个数组中各个字母出现的次数,最后进行比较,出现不一样的即可判结。 int isCongruent(char* s, char* c){ int n1 =&n...
C
字符串
2022-04-14
1
447
题解 | #Excel列名称#
题目数据范围是1到16384, 而最大的二位是ZZ即702,最大的三位是ZZZ即18278,那么n对应的字母最多只有3位。 用一个三位的字符串来接收即可。那么怎么把数值转成字符类型,先得定义字符类型,然后用该数字减1再加上’A'即为该字符的ASCII码,用字符类型表示出来就是大写字母了。 ...
C
字符串
2022-04-13
1
404
题解 | #验证回文字符串(二)#
1.先验证是否本身就是回文字符串,无非两种情况一种奇数位,如12321;一种偶数位,如123321. 2,一个从前往后走,一个从后往前走,相遇或者刚好错过时结束,可判结。对于回文类型,要么两个下标相同 i==j,即奇数位情况;要么刚好错过, i==j+1。 3.当中途遇到前后两个字符不相...
C
字符串
双指针
2022-04-13
2
577
题解 | #替换空格#
第一趟遍历先数出总共有多少个空格,然后就可以知道新字符串是多长,因为每个空格会换成3个字符。 然后再次遍历,遇到空格就改成‘%’,‘2’,‘0’三个字符。 char* replaceSpace(char* s ) { &nbs...
C
字符串
2022-04-12
11
739
首页
上一页
1
2
下一页
末页