給你一個整數 num 。你可以對它進行如下步驟恰好 兩次 :
選擇一個數字 x (0 <= x <= 9).
選擇另一個數字 y (0 <= y <= 9) 。數字 y 可以等于 x 。
將 num 中所有出現 x 的數位都用 y 替換。
得到的新的整數 不能 有前導 0 ,得到的新整數也 不能 是 0 。
令兩次對 num 的操作得到的結果分別為 a 和 b 。
請你返回 a 和 b 的 最大差值 。
示例 1:
輸入:num = 555
輸出:888
解釋:第一次選擇 x = 5 且 y = 9 ,并把得到的新數字保存在 a 中。
第二次選擇 x = 5 且 y = 1 ,并把得到的新數字保存在 b 中。
現在,我們有 a = 999 和 b = 111 ,最大差值為 888
解題思路
因為高位對數字大小的影響最大,所以優先將高位的數字變大或減小,就能得出最大值,最小值。
代碼
class Solution {public int maxDiff(int num) {String tem=Integer.toString(num),tem2=Integer.toString(num);for(int i=0;i<tem.length();i++)//求出最大化數字if(tem.charAt(i)=='9') continue;else {tem= tem.replace(tem.charAt(i),'9');break;}for(int i=0;i<tem.length();i++)//求出最小化數字if(tem2.charAt(i)=='0'||tem2.charAt(i)=='1'&&tem2.charAt(0)=='1') continue;
//開頭為1時,后面不能替換1,否則出現前導0else {if(i==0)//開頭最小只能換成1tem2= tem2.replace(tem2.charAt(i),'1');elsetem2=tem2.replace(tem2.charAt(i),'0');break;}int b=Integer.parseInt(tem2)==0?num:Integer.parseInt(tem2);//不能為0,如果為0,變回numreturn Integer.parseInt(tem)-b;}
}