欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > [每日一题]3174. 清除数字

[每日一题]3174. 清除数字

2024/10/25 1:26:01 来源:https://blog.csdn.net/weixin_72066135/article/details/141934700  浏览:    关键词:[每日一题]3174. 清除数字

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。

💓博主csdn个人主页:小小unicorn
⏩专栏分类:算法从入门到精通
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

专题一

  • 题目来源
  • 题目描述
  • 算法原理
    • 方法一:栈
    • 代码实现
    • 方法二:递归
    • 代码实现

题目来源

本题来源为:

清楚数字

题目描述

给你一个字符串 s 。

你的任务是重复以下操作删除 所有 数字字符:

删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
在这里插入图片描述

算法原理

方法一:栈

根据题意,我们可以使用栈来模拟所有操作。首先遍历字符串 s,令当前访问的字符为 c,有两种情况:

  • c 为数字,那么我们将栈顶字符弹出。

  • c 不为数字,那么我们将 c 压入栈中。

最后返回栈中自底向上的所有字符组成的字符串为结果。

代码实现

class Solution 
{
public:string clearDigits(string s) {string res;for(char c:s){if(isdigit(c)){//出栈res.pop_back();}else{//入栈res.push_back(c);}}return res;}
};

其中isdigit是一个函数,他的功能如下:

检查 c 是否为十进制字符。
十进制数字是以下任意数字: 0 1 2 3 4 5 6 7 8 9
在这里插入图片描述

方法二:递归

在这里插入图片描述

代码实现

class Solution 
{
public:string clearDigits(string s) {//递归int n=s.size();for(int i=0;i<n;i++){int d=s[i]-'0';if(d>=0&&d<=9){s.erase(s.begin()+i-1,s.begin()+i+1);return clearDigits(s);} }//递归出口return s;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com