首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

leetcode-3. 无重复字符的最长子串

这道题要明确的一点是求最长子串而不是最长子序列。先对传进来的字符串长度进行判断,若传进来的字符串长度小于等于 1,则直接返回其长度即可,定义开始指针的位置,以及初始化最长字串的记录值,并将字符串转换为字符数组。开始遍历字符数组,外层从 1 开始,里层从 0 开始。   如果前后指针的字符一样,则重新定义开始的位置为当前的位置 +1,并跳出本次循环。每两次循环执行完后都要让当前字串长度与已记录的最长子串长度进行比较,由于 start 从 0 开始的,求真正的长度时要 +1,用三目运算判断当前最长的子串与已记录的最长子串的比较且重新定义最长子串,可能还是原来的最长,也可能是当前子串最长。待遍历完成后记录的最长字串即为所求,返回即可。

04

字符串例题

给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。注意两个s可能有重叠部分。例如,"ababa"含有两个“aba". 输入描述:  输入包括一个字符串s,字符串长度length(1<=length<=50),s中每个字符都是小写字符。 输出描述:  输出一个字符串,即含有连续两个s作为子串的最短字符串。 示例1  输入:abracadabra  输出:abracadabracadabra  思路:求出原字符串的next数组,假设原字符串长度为n,再求next[n]位置的值,表示后面需要补下标为next[n]开始到结尾的字符,举个例子:str=abracadabra,next值分别是-1,0,0,0,1,0,1,0,1,2,2,然后再求next[n]的值为4,所以从下标为4开始一直往后的字符全部添加到结尾就变成了abracadabracadabra

02
领券