leet-code/src/main/java/leetcode/editor/cn/LargestNumberAfterMutatingSubstring.java

86 lines
2.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给你一个字符串 num ,该字符串表示一个大整数。另给你一个长度为 10 且 下标从 0 开始 的整数数组 change ,该数组将 0-9 中的每个数字映
//射到另一个数字。更规范的说法是,数字 d 映射为数字 change[d] 。
//
// 你可以选择 突变 num 的任一子字符串。突变 子字符串意味着将每位数字 num[i] 替换为该数字在 change 中的映射(也就是说,将 num[i]
// 替换为 change[num[i]])。
//
// 请你找出在对 num 的任一子字符串执行突变操作(也可以不执行)后,可能得到的 最大整数 ,并用字符串表示返回。
//
// 子字符串 是字符串中的一个连续序列。
//
//
//
// 示例 1
//
// 输入num = "132", change = [9,8,5,0,3,6,4,2,6,8]
//输出:"832"
//解释:替换子字符串 "1"
//- 1 映射为 change[1] = 8 。
//因此 "132" 变为 "832" 。
//"832" 是可以构造的最大整数,所以返回它的字符串表示。
//
//
// 示例 2
//
// 输入num = "021", change = [9,4,3,5,7,2,1,9,0,6]
//输出:"934"
//解释:替换子字符串 "021"
//- 0 映射为 change[0] = 9 。
//- 2 映射为 change[2] = 3 。
//- 1 映射为 change[1] = 4 。
//因此,"021" 变为 "934" 。
//"934" 是可以构造的最大整数,所以返回它的字符串表示。
//
//
// 示例 3
//
// 输入num = "5", change = [1,4,7,5,3,2,5,6,9,4]
//输出:"5"
//解释:"5" 已经是可以构造的最大整数,所以返回它的字符串表示。
//
//
//
//
// 提示:
//
//
// 1 <= num.length <= 10⁵
// num 仅由数字 0-9 组成
// change.length == 10
// 0 <= change[d] <= 9
//
// Related Topics 贪心 数组 字符串 👍 5 👎 0
package leetcode.editor.cn;
//1946:子字符串突变后可能得到的最大整数
class LargestNumberAfterMutatingSubstring{
public static void main(String[] args) {
//测试代码
Solution solution = new LargestNumberAfterMutatingSubstring().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String maximumNumber(String num, int[] change) {
StringBuilder str = new StringBuilder();
int flag = 0;
int i = 0;
for (; i < num.length(); i++) {
int n = num.charAt(i) - '0';
if (n > change[n] && flag == 1) {
break;
}
if (n < change[n]) {
str.append(change[n]);
flag = 1;
}else{
str.append(n);
}
}
return str + num.substring(i);
}
}
//leetcode submit region end(Prohibit modification and deletion)
}