diff --git a/README.md b/README.md index 4345c749..43c07fe4 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ LeetCode | # | Title | Solution | Difficulty | |---| ----- | -------- | ---------- | +|1946|[Largest Number After Mutating Substring](https://leetcode.com/problems/largest-number-after-mutating-substring/) | [C++](/Users/chenhao/GitHub/leetcode/largestNumberAfterMutatingSubstring/LargestNumberAfterMutatingSubstring.cpp)|Medium| |1945|[Sum of Digits of String After Convert](https://leetcode.com/problems/sum-of-digits-of-string-after-convert/) | [C++](/Users/chenhao/GitHub/leetcode/sumOfDigitsOfStringAfterConvert/SumOfDigitsOfStringAfterConvert.cpp)|Easy| |1935|[Maximum Number of Words You Can Type](https://leetcode.com/problems/maximum-number-of-words-you-can-type/) | [C++](./algorithms/cpp/maximumNumberOfWordsYouCanType/MaximumNumberOfWordsYouCanType.cpp)|Easy| |1882|[Process Tasks Using Servers](https://leetcode.com/problems/process-tasks-using-servers/) | [C++](./algorithms/cpp/processTasksUsingServers/ProcessTasksUsingServers.cpp)|Medium| diff --git a/largestNumberAfterMutatingSubstring/LargestNumberAfterMutatingSubstring.cpp b/largestNumberAfterMutatingSubstring/LargestNumberAfterMutatingSubstring.cpp new file mode 100644 index 00000000..7dd3c765 --- /dev/null +++ b/largestNumberAfterMutatingSubstring/LargestNumberAfterMutatingSubstring.cpp @@ -0,0 +1,68 @@ +// Source : https://leetcode.com/problems/largest-number-after-mutating-substring/ +// Author : Hao Chen +// Date : 2021-11-12 + +/***************************************************************************************************** + * + * You are given a string num, which represents a large integer. You are also given a 0-indexed + * integer array change of length 10 that maps each digit 0-9 to another digit. More formally, digit d + * maps to digit change[d]. + * + * You may choose to mutate a single substring of num. To mutate a substring, replace each digit + * num[i] with the digit it maps to in change (i.e. replace num[i] with change[num[i]]). + * + * Return a string representing the largest possible integer after mutating (or choosing not to) a + * single substring of num. + * + * A substring is a contiguous sequence of characters within the string. + * + * Example 1: + * + * Input: num = "132", change = [9,8,5,0,3,6,4,2,6,8] + * Output: "832" + * Explanation: Replace the substring "1": + * - 1 maps to change[1] = 8. + * Thus, "132" becomes "832". + * "832" is the largest number that can be created, so return it. + * + * Example 2: + * + * Input: num = "021", change = [9,4,3,5,7,2,1,9,0,6] + * Output: "934" + * Explanation: Replace the substring "021": + * - 0 maps to change[0] = 9. + * - 2 maps to change[2] = 3. + * - 1 maps to change[1] = 4. + * Thus, "021" becomes "934". + * "934" is the largest number that can be created, so return it. + * + * Example 3: + * + * Input: num = "5", change = [1,4,7,5,3,2,5,6,9,4] + * Output: "5" + * Explanation: "5" is already the largest number that can be created, so return it. + * + * Constraints: + * + * 1 <= num.length <= 10^5 + * num consists of only digits 0-9. + * change.length == 10 + * 0 <= change[d] <= 9 + ******************************************************************************************************/ + +class Solution { +public: + string maximumNumber(string num, vector& change) { + bool replace = false; + for(int i=0; i change[n] && replace ) { + break; + } + } + return num; + } +};