给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。 你需要对 s 重复进行无限次这样的删除操作,直到无法继续为止。 在执行完所有删除操作后,返回最终得到的字符串。 本题答案保证唯一。
给你一个下标从 0 开始的整数数组 nums ,如果满足下述条件,则认为数组 nums 是一个 美丽数组 : • nums.length 为偶数 • 对所有满足 i % 2 == 0 的下标 i ,nums[i] != nums[i + 1] 均成立 注意,空数组同样认为是美丽数组。 你可以从 nums 中删除任意数量的元素。当你删除一个元素时,被删除元素右侧的所有元素将会向左移动一个单位以填补空缺,而左侧的元素将会保持 不变 。 返回使 nums 变为美丽数组所需删除的 最少 元素数目。
给你一个字符串 s ,请你判断它是否 有效 。 字符串 s 有效 需要满足:假设开始有一个空字符串 t = "" ,你可以执行 任意次 下述操作将 t 转换为 s : • 将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft + "abc" + tright,其中 t == tleft + tright 。注意,tleft 和 tright 可能为 空 。 如果字符串 s 有效,则返回 true;否则,返回 false。
给你一个由大小写英文字母组成的字符串 s 。 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: • 若 s[i] 是小写字符,则 s[i+1] 不可以是相同的大写字符。 • 若 s[i] 是大写字符,则 s[i+1] 不可以是相同的小写字符。 请你将字符串整理好,每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整理好为止。 请返回整理好的 字符串 。题目保证在给出的约束条件下,测试样例对应的答案是唯一的。 注意:空字符串也属于整理好的字符串,尽管其中没有任何字符。
给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 s 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作,删除所有 "AB" 和 "CD" 子串,返回可获得的最终字符串的 最小 可能长度。 注意,删除子串后,重新连接出的字符串可能会产生新的 "AB" 或 "CD" 子串。
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: • MinStack() 初始化堆栈对象。 • void push(int val) 将元素val推入堆栈。 • void pop() 删除堆栈顶部的元素。 • int top() 获取堆栈顶部的元素。 • int getMin() 获取堆栈中的最小元素。
请你设计一个支持对其元素进行增量操作的栈。 实现自定义栈类 CustomStack : • CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量。 • void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。 • int pop():弹出栈顶元素,并返回栈顶的值,或栈为空时返回 -1 。 • void inc(int k, int val):栈底的 k 个元素的值都增加 val 。如果栈中元素总数小于 k ,则栈中的所有元素都增加 val 。
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为 更加简洁的规范路径。 在 Unix 风格的文件系统中规则如下: • 一个点 '.' 表示当前目录本身。 • 此外,两个点 '..' 表示将目录切换到上一级(指向父目录)。 • 任意多个连续的斜杠(即,'//' 或 '///')都被视为单个斜杠 '/'。 • 任何其他格式的点(例如,'...' 或 '....')均被视为有效的文件/目录名称。 返回的 简化路径 必须遵循下述格式: • 始终以斜杠 '/' 开头。 • 两个目录名之间必须只有一个斜杠 '/' 。 • 最后一个目录名(如果存在)不能 以 '/' 结尾。 • 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。 返回简化后得到的 规范路径 。
给你一个字符串 s。 英文字母中每个字母的 镜像 定义为反转字母表之后对应位置上的字母。例如,'a' 的镜像是 'z','y' 的镜像是 'b'。 最初,字符串 s 中的所有字符都 未标记 。 字符串 s 的初始分数为 0 ,你需要对其执行以下过程: • 从左到右遍历字符串。 • 对于每个下标 i ,找到距离最近的 未标记 下标 j,下标 j 需要满足 j < i 且 s[j] 是 s[i] 的镜像。然后 标记 下标 i 和 j,总分加上 i - j 的值。 • 如果对于下标 i,不存在满足条件的下标 j,则跳过该下标,继续处理下一个下标,不需要进行标记。 返回最终的总分。
给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。
你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步。 请你实现 BrowserHistory 类: • BrowserHistory(string homepage) ,用 homepage 初始化浏览器类。 • void visit(string url) 从当前页跳转访问 url 对应的页面 。执行此操作会把浏览历史前进的记录全部删除。 • string back(int steps) 在浏览历史中后退 steps 步。如果你只能在浏览历史中后退至多 x 步且 steps > x ,那么你只后退 x 步。请返回后退 至多 steps 步以后的 url 。 • string forward(int steps) 在浏览历史中前进 steps 步。如果你只能在浏览历史中前进至多 x 步且 steps > x ,那么你只前进 x 步。请返回前进 至多 steps步以后的 url 。