day22:151. 颠倒字符串中的单词、46. 全排列、2. 两数相加
今日知识点:字符串、递归、链表,难度为中等、中等、中等
day22题目:151. 颠倒字符串中的单词、46. 全排列、2. 两数相加
今日知识点:字符串、递归、链表,难度为中等、中等、中等
学习计划链接:冲刺春招-精选笔面试 66 题大通关
昨日题目链接:冲刺春招-精选笔面试 66 题大通关 day21
给你一个字符串 s ,颠倒字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意: 输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例 1:
输入: s = "the sky is blue"
输出: "blue is sky the"示例 2:
输入: s = " hello world "
输出: "world hello"
解释: 颠倒后的字符串中不能存在前导空格和尾随空格。示例 3:
提示:
1 <= s.length <= 104s包含英文大小写字母、数字和空格' 's中 至少存在一个 单词
进阶: 如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用 O(1) 额外空间复杂度的 原地 解法。
思路
不讲武德版:一行代码,先去除前后空格,再利用正则将字符串从空白处分割后反转再拼回去
O(1) 额外空间复杂度的 原地 解法:JS字符串不可变,需要O(n)的空间将字符串转换为数组,不行,换成c++的话就是O(1)了。
双指针进行反转
将字符串转换为数组
ans的同时去除前后空格和多余空格trim2arr反转整个数组
reverse(ans, 0, ans.length - 1)反转每个单词使单词内部顺序保持不变
reverseWord(ans)
代码
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
示例 2:
示例 3:
提示:
1 <= nums.length <= 6-10 <= nums[i] <= 10nums中的所有整数 互不相同
思路
代码
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
示例 2:
示例 3:
提示:
每个链表中的节点数在范围
[1, 100]内0 <= Node.val <= 9题目数据保证列表表示的数字不含前导零
思路
跟大数加没什么区别,就是换成了链表而已~
代码
好耶!完成!
明天开始剑指offer的刷题
刷完剑指offer就去刷剑指的专项
最后更新于
这有帮助吗?