字符串问题的解题思路

字符串刷题经历

2020.05.02

  • leetcode3 无重复最长子串
  • 解题思路:利用滑动窗口,定义两个指针start和end组成窗口,定义一个Map集合来储存数组中的元素及其下标。起始时两指针同时指向字符串第一个元素,end指针开始进行遍历,每遍历一个元素,将元素和下标以key-value的形式存放在Map中,更新结果集,移动end指针。当遍历到相同元素时,移动start指针至上次出现的次元素的下标值加一的位置,并更新Map集合中该元素的value值,更新结果集。当end指针到达终点,遍历结束,得到结果。
  • 注意点:当end下标遍历到的元素上次出现的位置再start下标之前时,不能移动start下标,比如"abba"。
  • leetcode5 最长回文子串
  • 解题思路:利用中心扩散,对于每一个元素,都分为以下两种情况进行扩散:① 该元素为回文子串中心 ② 该元素和下一个元素都为回文子串中心。把每个元素的最大的回文子串都找到。遍历结束即得到结果。
  • leetcode415 字符串相加
  • 解题思路:利用双指针,两个指针分别定位在两个字符串的尾部,一个进位位保存进位结果,从后向前逐一求和即可。
  • leetcode93 复原IP地址
  • 解题思路:回溯法,穷举出所有的情况,选出符合条件的。

2020.05.03

  • leetcode394 字符串解码
  • 解题思路:利用栈,定义两个栈,分别是数字栈stack_nums来统计重复次数和字母栈stack_str来统计当前的[到上一个[间的字符串。从前到后遍历整个字符串,如果是普通英文字符存入res中;如果是数字字符,记录数字大小;如果是[,将当前的res字符串和记录的数字入栈,并清空字符串;如果是],首先对stack_nums进行出栈操作,对当前的res内字符串循环拼接,同时stack_str出栈与拼接后的字符串进行组合。
  • 思路解析:
    ① 有几个数字,就会有几对[]
    ② 明确来说,res中存放的字符串才是碰到]时,需要进行重复的;stack_str中的字符则是出现]时,在res中字符拼接结束后加在其前面的字符。
  • leetcode43 字符相乘
  • 解题思路:利用小学数学乘法的思路,将num1每一位数与num2相乘一次,每次的乘积要与其所在位置的权重相乘,然后做和即可。
  • leetcode8 字符串转整数
  • 解题思路:这个题就是纯体力活,按照题目的要求一条一条实现就行,当然我是看了高票的答案解析,自己容易写懵圈。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值