3. 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长
子串的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
思路
这道题是找连续的无重复最长子串,要采用滑动窗口的思路,将给定字符串长度记录,同时初始化窗口的左右指针先指向第一个元素。通过循环左右指针内部空间判断是否有重复元素,若没有则将当前窗口长度和ans值进行比较,并保存较大值存入ans;若有重复元素则将当前重复元素的下标修改为后一个重复元素的下标。最终返回ans。
题解
206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
思路
经典算法思路,先初始化两个指针p,q分别指向头结点和空,
进入循环体先初始化一个临时指针t去指向p的下一个结点,
然后令这个结点指向当前的q,其实就是断开p->next和p->next->next的联系,
再将q指针移动到p,在循环内q指针始终指向新链表的首部,
最后p指针移动到临时指针t,本轮循环结束
整体循环结束后返回q,即首元素