电影网站建设模板,比特币交易所网站开发,静态网页制作视频教程,交友wordpress3174 清除数字
题目链接
题目描述
给你一个字符串 s 。
你的任务是重复以下操作删除 所有 数字字符#xff1a;
删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
示例 1#xff1a;
输入#xff1a;s abc…3174 清除数字
题目链接
题目描述
给你一个字符串 s 。
你的任务是重复以下操作删除 所有 数字字符
删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
示例 1
输入s abc
输出abc
解释:字符串中没有数字。示例 2
输入s cb34
输出
解释
一开始我们对 s[2] 执行操作s 变为 c4 。
然后对 s[1] 执行操作s 变为 。题目解析
这道题目是一道字符串处理的题目主要是删除所有数字字符并且在删除数字字符后删除它左边最近的非数字字符。
因此可以通过栈res记录结果直接遍历数组如果是数字字符则跳过并将res中的一个字符出栈如果是非数字字符则直接进行入栈操作加入res中。
只需要一次遍历时间复杂度为O(n)。空间复杂度O(n)。
代码实现
python版本
class Solution(object):def clearDigits(self, s):resfor i in range(0,len(s)):if s[i].isdigit():res res[:-1]else:ress[i]return resgo版本
func clearDigits(s string) string {var res []bytefor i:0;ilen(s);i{if s[i]9s[i]0{res res[:len(res)-1]}else{res append(res, s[i])}}return string(res)
}C版本
class Solution {
public:string clearDigits(string s) {string res;for(int i0;is.size();i){if(s[i]0s[i]9){res.pop_back();}else{resress[i];}}return res;}
};