2259. 移除指定数字得到的最大结果、字符串

news/2024/11/29 4:34:14/

版本1:

class Solution {
public:string removeDigit(string number, char digit) {// 记录字符出现的位置int pos0 = -1;// 获取第一次字符出现的位置int i = 0; for(; i < number.size(); i++){if(number[i] == digit){pos0 = i;break;}} // 获取最后一次字符出现的位置,如果有的话int border0 = i; for(i = number.size() - 1; i > border0; i--){if(number[i] == digit){pos0 = i;break;}}// 如果字符只出现一次if(border0 == i){return number.substr(0, pos0) + number.substr(pos0 + 1);  }// 从第一个出现的位置开始寻找,当前位置的字符小于下一位字符的情况 int border1 = i; for(i = border0; i < border1; i++){char c = number[i];if(c == digit && c < number[i + 1]){// 如果小于则直接返回,符合题意pos0 = i;break;}}return number.substr(0, pos0) + number.substr(pos0 + 1);  }
};

版本二(优化):

1.使用string.erase函数去直接处理,移除字符的操作

2.合并查询步骤,从一开始就找目标字符小于其每次出现位置的下一个位置对应字符的情况,如果有则直接处理,否则处理最后一个出现的位置。

// basic_string& erase( size_type index = 0, size_type count = npos );class Solution {
public:string removeDigit(string number, char digit) {// 记录字符出现的位置int pos0 = -1;int len = number.size(); for(int i = 0; i < number.size(); i++){char c = number[i];if(c == digit){// 记录当前出现的位置pos0 = i;// 如果后一个位置的字符大于 目标字符if(i + 1 < len && c < number[i + 1]){break;}}}// 删除字符number.erase(pos0, 1);return number;}
};

 


http://www.ppmy.cn/news/535555.html

相关文章

Leetcode 2259. 移除指定数字得到的最大结果(可以,一次过)

给你一个表示某个正整数的字符串 number 和一个字符 digit 。 从 number 中 恰好 移除 一个 等于 digit 的字符后,找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit 在 number 中出现至少一次。 示例 1: 输入:number = "123", digit = &…

LeetCode题解-2259.移除指定数字得到的最大结果

这道题是基于一种贪心的思想去做的。 题目里说去掉一位所给的数&#xff0c;使得去掉之后的数值最大&#xff0c;那只要最高的一位数等于题目要求的数且比下一位数小&#xff0c;那么这个数就是我们要去掉的数&#xff0c;此时去掉这个数肯定能保证所得到的数最大&#xff0c;这…

leetcode-2259 移除指定数字得到的最大结果

给一个表示某个正整数的字符串 number 和一个字符 digit 。 从 number 中 恰好 移除 一个 等于 digit 的字符后&#xff0c;找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit 在 number 中出现至少一次。 示例 1&#xff1a;输入&#xff1a;number &q…

Leetcode 2259. Remove Digit From Number to Maximize Result

题目 解法1&#xff1a;暴力搜索 note&#xff1a;c中数字组成的字符串可以直接比较大小 class Solution { public:string removeDigit(string number, char digit) {string max_res "";for(int i0;i<number.size();i){char d number[i];if(d ! digit) contin…

c++编译错误:error C2259 能实例化抽象类

错误&#xff1a;error C2259 不能实例化抽象类 原因&#xff1a; 抽象类不能实例化&#xff0c;需要在派生类中实现基类所有定义的虚函数&#xff0c;只要有一个纯虚函数没有定义&#xff0c;那么在派生类还是抽象类。仍然不能实例化。 解决方法&#xff1a; 把父类的虚函…

JDK17 Spring-Security jxb 报错

jdk17 无法解决&#xff1a; java.security.PrivilegedActionException: null at java.base/java.security.AccessController.doPrivileged(AccessController.java:573) ~[na:na] Caused by: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.Stri…

【leetcode】2259. 移除指定数字得到的最大结果(js实现)

1. 题目 2259. 移除指定数字得到的最大结果 2. 思路 根据题意进行模拟&#xff0c;每次找到与digit相同的元素就将其移除&#xff0c;将剩余的字符串与存储最大值的字符串进行比较&#xff0c;一直保持max中保存的是最大值&#xff0c;最终将max返回。 3. 代码 /*** para…

❤️2020年CSDN第一名何许人也❤️

❤️强烈推荐人工智能学习网站❤️ CSDN成就了一亿技术人&#xff0c;CSDN圈里都是技术人&#xff0c;故CSDN第一名格外受人关注们今天来看一下。 CSDN有个叫stpeace的&#xff0c;发现他几年霸榜CSDN第一名。 博客详细信息 原创2259篇&#xff0c;访问2224万&#xff0c;实力…