2006年第一仗

考研前夜

明天是2006年度硕士研究生入学考试。

mm将再次上阵拼杀,祝福她一切顺利,马到成功。

晚上吃饭的时候,她问我紧张不。我故作潇洒地说“俺啥大风大浪没见过,不紧张”。可我并没告诉她,

昨晚一直在做梦,没怎么睡好。中午她在我实验室听完时事后,我到超市买好了铅笔橡皮小刀中性笔圆珠笔约3点多回到寝室准备休息一下,可是挨到4点也没怎么睡熟,于是爬起来收拾回家要带的东西。自己也奇怪为什么会这么兴奋。其实想想自己陷在考研状态中已经三年了,先是自己很郁闷地考了一年,然以后接着是陪伴mm的两年。在后来这两年内,我们都成长不少。从最初的懵懂相识,到互相接受,然后到现在的默契。记得第一次她的考研成绩出来后,我那不可抑制的愤怒,现在想来自己不仅太不成熟而且完全没有应有的包容,好在我的坏情绪马上恢复了。在这个世界上,两个没有一点背景而且相当平凡的人,在为了彼此的将来奋斗,不也像那漫天飞舞的雪花一样吗?平凡而又别致晶莹。

吃晚饭,踏着积雪把她送回家,临走时她问我为啥不为她祝福。哈哈,在我的印象中好像是只有对别人进行祝福的,而她考试我比自己考试还在状态,其实就是自己在考试了,结果无意识地把祝福这事忘到一边了。

自己有实验室的任务,老师也不时地关心着自己工作的进度,而我却总是静不下心来做事。还是收拾一下东西得了,尽量赶快把工作做完,这样考完试还有好多事情安排呢。平常的人们都是过着类似的生活,也因为这种类似而体会不到这种情意。只有在一些关键的事情面前才会让自己对这种特殊的关系深深体会。

现在很是担心mm今晚还会不会像去年一样睡不着?她肯定比上次更加紧张,我实际上应该为她宽宽心,让她轻装上阵。其实只要正常发挥,考上工大是不存在任何问题的。不过,想一想,考完试马上就要各自回家,然后又是将近半年的分别,也许我这个后知后觉得人现在还体会不到这种心境。

下雪了,应该是是个好兆头,也许在上考场之前一切就已经决定了,我们需要做的仅仅是按着既定程序把

改写的写上然后回家过年。

Best wishes to my love, little bubu!

<think>嗯,用户的问题是关于如何用编程语言实现求解不含重复字符的最长子串长度算法。我之前回答过类似的问题,现在需要根据提供的引用资料来构造回答。首先,我需要整理用户提供的引用内容,看看哪些信息可以利用。 引用1提到多次强调“多读题”,这可能是在提醒要正确理解问题需求,确保找到的是子串而不是子序列。引用2和4提到了滑动窗口和哈希表的使用,这是解决这类问题的常见方法。引用3中的面试题48也涉及动态规划解法,但用户现在更关心的是代码实现,特别是滑动窗口法。引用4中的Python代码示例可能可以直接参考,但需要检查是否符合最新的回答要求,比如使用正确的中文和LaTeX格式。 用户希望得到结构清晰的步骤和代码实现,所以需要将算法分解成几个步骤。首先,滑动窗口的基本思想,用左右指针来维护窗口,哈希表记录字符最近的位置。当遇到重复字符时,移动左指针到重复位置的下一位,同时更新最大长度。 需要注意代码中的注释和格式,确保可读性。同时,要引用提供的参考资料,比如引用2和4提到的滑动窗口和哈希表。另外,时间复杂度分析也很重要,需要指出是O(n)的时间复杂度,因为每个字符被访问一次。 可能用户对动态规划方法也有兴趣,但根据问题描述,他们更倾向于直接的代码实现,所以可能将动态规划作为另一种解法简要提及,但重点放在滑动窗口上。此外,示例输入输出需要正确,比如引用5中的例子"pwwkew"输出3。 在代码部分,确保使用Python,并按照要求进行注释。同时,检查是否有语法错误,比如变量名是否正确,循环是否正确处理边界情况。例如,在滑动窗口的实现中,右指针逐步右移,每次更新哈希表,并处理左指针的移动。 最后,生成相关问题时要考虑用户可能的后续疑问,比如优化方法、不同语言的实现或者与其他算法的比较。这有助于用户深入理解问题。</think>### 无重复字符最长子串算法实现 #### 算法核心思路 1. **滑动窗口技术**:使用左右指针维护一个不含重复字符的窗口区间[^2][^4] 2. **哈希表记录位置**:通过哈希表存储每个字符最后出现的位置[^2][^3] 3. **动态更新窗口**:当发现重复字符时,立即调整左指针位置[^4] #### 实现步骤 1. 初始化左指针`left=0`和最大长度`max_len=0` 2. 创建字符位置字典`char_index = {}` 3. 遍历字符串,右指针`right`从0到`n-1`: - 当前字符`char`存在于字典且位置≥`left`时: $$ left = char_index[char] + 1 $$ - 更新字符位置字典:$ char_index[char] = right $ - 计算当前窗口长度: $$ current_len = right - left + 1 $$ - 更新最大长度: $$ max_len = \max(max_len, current_len) $$ #### Python实现代码 ```python def length_of_longest_substring(s: str) -> int: n = len(s) if n == 0: return 0 char_map = {} # 存储字符最后出现位置[^2][^4] max_length = 0 left = 0 for right in range(n): current_char = s[right] # 当字符存在且位置≥左指针时更新左指针[^4] if current_char in char_map and char_map[current_char] >= left: left = char_map[current_char] + 1 # 更新字符位置记录 char_map[current_char] = right # 计算当前窗口长度 max_length = max(max_length, right - left + 1) return max_length ``` #### 复杂度分析 - **时间复杂度**:$O(n)$,每个字符仅被访问一次[^2] - **空间复杂度**:$O(|\Sigma|)$,$\Sigma$为字符集大小[^3] #### 测试示例 ```python print(length_of_longest_substring("abcabcbb")) # 输出3 print(length_of_longest_substring("pwwkew")) # 输出3[^5] print(length_of_longest_substring("arabcacfr")) # 输出4[^3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值