(LeetCode每日一题) 2566. 替换一个数字后的最大差值 ( 贪心 )
题目:2566. 替换一个数字后的最大差值
思路:让值最大,从左到右,让第一个不为’9’的数字变为’9’。
同理,让值最小,从左到右,让第一个不为‘0’的数字变为‘0’。
C++版本:
class Solution {
public:int solve(string s,char u){int i=0;for(;i<s.size();i++){if(s[i]==u) continue;else{char t=s[i];while(i<s.size()){if(t==s[i]){s[i]=u;}i++;}break;}}return stoi(s);}int minMaxDifference(int num) {string s=to_string(num);return solve(s,'9')-solve(s,'0');}
};
JAVA版本:
class Solution {int solve(String s,char u){int i=0;char[] c=s.toCharArray();for(;i<c.length;i++){if(c[i]==u) continue;else{char t=c[i];while(i<c.length){if(t==c[i]){c[i]=u;}i++;}break;}}return Integer.parseInt(new String(c));}public int minMaxDifference(int num) {String s=String.valueOf(num);return solve(s,'9')-solve(s,'0');}
}
Go版本:
func minMaxDifference(num int) int {s:=strconv.Itoa(num)return solve(s,'9')-solve(s,'0')
}
func solve(s string, u byte) int {c:=[]byte(s)for i:=0;i<len(s);i++ {if c[i]==u {continue}t:=c[i]for i<len(s) {if c[i]==t {c[i]=u}i++}}ans,_:= strconv.Atoi(string(c))return ans
}