C语言中双指针算法如何使用


本篇内容主要讲解“C语言中双指针算法如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中双指针算法如何使用”吧!2.1 解题思路利用双指针,定义一个指针i和一个指针j让i开始走,固定住j,然后我们利用一个辅助数组来记录下每个字符出现的次数。比如对于字符串“abcabcdd”,当i走到第二个a的时候,a出现了两次,这时候让j开始向前走,走到b。这时候i和j之间的字符串是bca。没有重复的,i可以继续走,j继续固定。i走到b的时候b出现两次。这时候要移动j直至没有字符出现次数超过两次。如此反复直到i走到字符串结尾。2.2 代码实现2.3 代码解析首先定义数组S[128],利用memset函数来初始化该数组。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。for循环里声明i,j 为0,先让字符串的第一个字符对应的整数作为数组S的下标,该位置元素值加一;如果没有重复字符,ans递增;如果有重复字符今后进入免费云主机域名while循环,随着j的递增,之前数组里为一的元素值都会减一,为2的元素值也会减一并变为一;接着j固定,i继续增长,再有重复字符就会重复上述操作,最终通过max函数得到最大的无重复子字符串长度。2.1 解题思路根据题目可知该数组是升序排列,那我们可以用两个指针:一个在左边界,一个在右边界。如果数组下标对应的值相加比num小,那么就让左边指针递增,反之则右边指针递减。如果左右指针相等,说明没有满足条件的数对,返回空数组。如果存在该数对,利用push_back方法插入数组并返回即可2.2 代码实现本题思路确定后代码比较好理解,就没有分析部分了。这两道题都是双指针的解法:第一题相当于是相邻指针,第二题则是双端指针,各有特色。到此,相信大家对“C语言中双指针算法如何使用”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Value注解支持对象类型ConfigurationProperties功能问题怎么解决

本篇内容主要讲解“Value注解支持对象类型ConfigurationProperties功能问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Value注解支持对象类型ConfigurationPrope…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/30 20:51
下一篇 03/30 20:52

相关推荐