小语种外贸网站,互联网ui设计是什么,世界足球排名前100,咨询公司排名前十【力扣周赛】第357场周赛 2810. 故障键盘题目描述解题思路 2811. 判断是否能拆分数组题目描述解题思路 2810. 故障键盘
题目描述
描述#xff1a;你的笔记本键盘存在故障#xff0c;每当你在上面输入字符 ‘i’ 时#xff0c;它会反转你所写的字符串。而输入其他字符则可以… 【力扣周赛】第357场周赛 2810. 故障键盘题目描述解题思路 2811. 判断是否能拆分数组题目描述解题思路 2810. 故障键盘
题目描述
描述你的笔记本键盘存在故障每当你在上面输入字符 ‘i’ 时它会反转你所写的字符串。而输入其他字符则可以正常工作。
给你一个下标从 0 开始的字符串 s 请你用故障键盘依次输入每个字符。
返回最终笔记本屏幕上输出的字符串。
示例 1
输入s string
输出rtsng
解释
输入第 1 个字符后屏幕上的文本是s 。
输入第 2 个字符后屏幕上的文本是st 。
输入第 3 个字符后屏幕上的文本是str 。
因为第 4 个字符是 i 屏幕上的文本被反转变成 rts 。
输入第 5 个字符后屏幕上的文本是rtsn 。
输入第 6 个字符后屏幕上的文本是 rtsng 。
因此返回 rtsng 。示例 2
输入s poiinter
输出ponter
解释
输入第 1 个字符后屏幕上的文本是p 。
输入第 2 个字符后屏幕上的文本是po 。
因为第 3 个字符是 i 屏幕上的文本被反转变成 op 。
因为第 4 个字符是 i 屏幕上的文本被反转变成 po 。
输入第 5 个字符后屏幕上的文本是pon 。
输入第 6 个字符后屏幕上的文本是pont 。
输入第 7 个字符后屏幕上的文本是ponte 。
输入第 8 个字符后屏幕上的文本是ponter 。
因此返回 ponter 。提示
1 s.length 100 s 由小写英文字母组成 s[0] ! ‘i’
解题思路
思路直接模拟。
class Solution {
public:string finalString(string s) {int ns.size();for(int i0;in;i){if(s[i]i){reverse(s.begin(),s.begin()i);s.erase(i,1);i--;}}return s;}
};总结reverse(s.begin(),s.end())其是左闭右开区间[begin,end)s.erase(index,len)表示删除下标从index开始长度为len的元素此时删除后要将i减去一喔
2811. 判断是否能拆分数组
题目描述
描述给你一个长度为 n 的数组 nums 和一个整数 m 。请你判断能否执行一系列操作将数组拆分成 n 个 非空 数组。
在每一步操作中你可以选择一个 长度至少为 2 的现有数组之前步骤的结果 并将其拆分成 2 个子数组而得到的 每个 子数组至少 需要满足以下条件之一
子数组的长度为 1 或者 子数组元素之和 大于或等于 m 。 如果你可以将给定数组拆分成 n 个满足要求的数组返回 true 否则返回 false 。
注意子数组是数组中的一个连续非空元素序列。
示例 1
输入nums [2, 2, 1], m 4
输出true
解释
第 1 步将数组 nums 拆分成 [2, 2] 和 [1] 。
第 2 步将数组 [2, 2] 拆分成 [2] 和 [2] 。
因此答案为 true 。示例 2
输入nums [2, 1, 3], m 5
输出false
解释
存在两种不同的拆分方法
第 1 种将数组 nums 拆分成 [2, 1] 和 [3] 。
第 2 种将数组 nums 拆分成 [2] 和 [1, 3] 。
然而这两种方法都不满足题意。因此答案为 false 。示例 3
输入nums [2, 3, 3, 2, 3], m 6
输出true
解释
第 1 步将数组 nums 拆分成 [2, 3, 3, 2] 和 [3] 。
第 2 步将数组 [2, 3, 3, 2] 拆分成 [2, 3, 3] 和 [2] 。
第 3 步将数组 [2, 3, 3] 拆分成 [2] 和 [3, 3] 。
第 4 步将数组 [3, 3] 拆分成 [3] 和 [3] 。
因此答案为 true 。 提示
1 n nums.length 100 1 nums[i] 100 1 m 200
解题思路
思路由于最后必定会拆分出一个长度为2的数组故只需要判断数组中是否存在相邻的两个数之和大于等于m即可。
class Solution {
public:bool canSplitArray(vectorint nums, int m) {int nnums.size();if(n2)return true;for(int i1;in;i){if(nums[i]nums[i-1]m)return true;}return false;}
};总结假设1 1 1 1 2 2 1 1 1 1m4那么存在2 2其和等于4故可以像砍一刀一样左右各自依次划分长度为1的数组。