字符串
文章平均质量分 51
剑指Offer-LeetCode字符串类的面试高频题
Java大数据运动猿
努力提升自己,记录学习过程。巩固自己,帮助他人!
展开
-
415. 字符串相加【148】
两个字符串相加,就像是我们平时在草稿纸上计算两个数相加一样,列出一个框架,两个数的‘个十百千万’位数对齐,如果两个数位数不一样,那就将少的位数用零补充,将这个框架用代码实现如下。 分别定义i 和 j两个变量,作为指针分别遍历两个数的位数,从低位到高位遍历,当遍历为负数的时候,用0代替。 while循环中就是两个数相加的代码实现,最后要将计算的结果进行反转,用toString函数展示出来。原创 2023-01-06 16:04:58 · 302 阅读 · 0 评论 -
3. 无重复字符的最长子串【539】== 剑指 Offer 48. 最长不含重复字符的子字符串【15】
滑动窗口(双指针)+HashMap记录重复字符位置 左右指针,左指针指向重复元素,右指针从左向右遍历,用HashMap判断元素是否为重复元素。原创 2022-10-18 14:54:58 · 258 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列【12】
递归、分两步。1. 先求出所有可能出现在第一个位置的字符,然后用第一个字符和后面所有字符交换。2. 固定第一个字符,让第二个字符和它后面所有的字符交换,以此类推。原创 2022-10-18 13:54:51 · 115 阅读 · 0 评论 -
剑指 Offer 20. 表示数值的字符串【2】
判断条件:‘.’出现正确情况:只出现一次,且在e的前面,‘e’出现正确情况:只出现一次,且出现前有数字,‘+’‘-’出现正确情况:只能在开头和e后一位原创 2022-10-15 10:04:52 · 534 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符【9】
(1)用HashMap集合: 用 HashMap 添加每个字符与其出现的值,出现一次为true,出现两次及两次以上为false,然后再依次遍历字符串时,找到第一个出现值为true的字符,返回即可。 (2)用字符数组: 因为该字符串全部是字母,所以可以用一个字符数组代替哈希表,数组下标就代表该字母。然后遍历字符串,在数组对应下标的地方为值加1,最后返回第一个值为1的下标。原创 2022-10-11 18:19:39 · 134 阅读 · 0 评论 -
剑指 Offer 58 - II. 左旋转字符串【2】
定义一个翻转函数,总共调用三次即可完成翻转。 1.反转区间为前n的子串2.反转区间为n到末尾的子串3.反转整个字符串原创 2022-10-11 17:04:00 · 106 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序【5】
定义一个双指针函数,用来翻转字符串。 先将整个字符串翻转,然后再逐一地对单词进行翻转,用空格判断是否是一个单词。 最后一个单词末尾没有空格,所以在最后直接翻转。原创 2022-10-11 16:27:29 · 273 阅读 · 0 评论 -
剑指 Offer 05. 替换空格【3】
1. 先计算新数组总的长度,由于空格换成 "%20",所以每个空格会额外多出两个字符。所以新的长度 = 原来长度 + 空格数 * 2。 2. 准备两个指针 P1, P2。P1 指向原始字符串的末尾,P2 指向新字符串的末尾。 3. 接下来向前移动指针 P1,逐个把它指向的字符复制到 P2 指向的位置,直到碰到了第一个空格为止。碰到第一个空格后,把 P1 向前移动 1 格,在 P2 之前插入字符串 "%20"。由于 "%20" 的长度为 3, 同时也需要把 P2 向前移动 3 格。原创 2022-10-10 12:40:10 · 378 阅读 · 0 评论