067:字符串解码

LeetCode 394 https://leetcode.cn/problems/decode-string/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 使用双栈法。一个栈存储数字,一个栈存储字符串。当遇到数字时,更新数字,注意数字可能有多位;遇到字母时,加到当前字符串中;遇到 ‘[’ 时,将将当前字符串和数字入栈;遇到 ‘]’ 时,解码,将数字和字符串出栈,将当前字符串重复 k 次加到栈顶字符串后面,将栈顶字符串更新为当前字符串。 时间复杂度:O(S)。 空间复杂度:O(S)。 ...

七月 3, 2025 · Cassius

059:反转字符串中的单词

LeetCode 151 https://leetcode.cn/problems/reverse-words-in-a-string/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 先翻转整个字符串,再分别翻转每一个单词。 时间复杂度:O(n),其中 n 为输入字符串的长度。 空间复杂度:O(n),用来存储字符串分割之后的结果。 ...

七月 3, 2025 · Cassius

050:字符串转换整数

LeetCode 8 https://leetcode.cn/problems/string-to-integer-atoi/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题是一道比较麻烦的模拟。 跳过前导空格。 检查符号。 读入数字。需要注意检查溢出。32 位 int 的范围是 [-2147483648, 2147483647]。无论是正数还是负数,只要绝对值大于 2147483647,我们就返回 INT_MAX/INT_MIN。对于正数是已经溢出,对于负数则正好是 INT_MIN。判断方式是 ans > INT_MAX / 10 || (ans == INT_MAX / 10 && s[i] > ‘7’)。 时间复杂度:O(n)。 空间复杂度:O(1)。 ...

七月 1, 2025 · Cassius

041:比较版本号

LeetCode 165 https://leetcode.cn/problems/compare-version-numbers/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 使用两个指针,遍历两个字符串,直到找到’.’,将每一段的版本号转换为整数,比较两个整数是否相等。整数初始化为 0,以处理这一段版本号缺失的情况。 时间复杂度:O(n+m),其中 m 是字符串 version1 的长度,n 是字符串 version2 的长度。 空间复杂度:O(1),我们只需要常数的空间保存若干变量。 ...

七月 1, 2025 · Cassius

027:字符串相加

LeetCode 415 https://leetcode.cn/problems/add-strings/description/ 难度:简单 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题为高精度加法。使用两个指针倒序遍历 num1 和 num2,最后处理有进位的情况。将 ans 反转后就是答案。 时间复杂度:O(max(m, n))。 空间复杂度:O(1)。 ...

六月 29, 2025 · Cassius

010:最长回文子串

LeetCode 5 https://leetcode.cn/problems/longest-palindromic-substring/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题是字符串的经典题目,有 3 种做法,分别是动态规划,中心扩展法和马拉车算法。其中前两种做法的时间复杂度为\(O(n^2)\),马拉车算法的时间复杂度为\(O(n)\)。不过由于马拉车算法较为复杂,在这里使用的是实现较为简单的中心扩展算法。 中心扩展算法就是对于每一个元素,分别讨论子串长度为奇数和偶数的情况,如果子串两端的字符相同,就继续向外扩展。 时间复杂度:\(O(n^2)\),其中 n 是字符串的长度。长度为 1 和 2 的回文中心分别有 n 和 n−1 个,每个回文中心最多会向外扩展 O(n) 次。 空间复杂度:O(1)。 ...

六月 28, 2025 · Cassius

C 语言字符串操作

在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。C 标准库提供了一系列对于字符串的操作,大多定义在头文件 <string.h> 中。本文对一些常用的字符串操作进行记录。 ...

二月 14, 2023 · Cassius