diff --git a/solution/1300-1399/1323.Maximum 69 Number/README.md b/solution/1300-1399/1323.Maximum 69 Number/README.md index b3711a9cd6960..8194d52188f17 100644 --- a/solution/1300-1399/1323.Maximum 69 Number/README.md +++ b/solution/1300-1399/1323.Maximum 69 Number/README.md @@ -70,7 +70,7 @@ tags: 我们将数组转换为字符串,然后从左到右遍历字符串,找到第一个出现的 $6$,将其替换为 $9$,然后返回转换后的字符串对应的整数即可。 -时间复杂度 $O(\log num)$,空间复杂度 $O(\log num)$。其中 $num$ 为给定的整数。 +时间复杂度 $O(\log \textit{num})$,空间复杂度 $O(\log \textit{num})$。其中 $\textit{num}$ 为给定的整数。 @@ -114,15 +114,8 @@ public: ```go func maximum69Number(num int) int { - s := strconv.Itoa(num) - nums := []byte(s) - for i, ch := range nums { - if ch == '6' { - nums[i] = '9' - break - } - } - ans, _ := strconv.Atoi(string(nums)) + s := strings.Replace(strconv.Itoa(num), "6", "9", 1) + ans, _ := strconv.Atoi(s) return ans } ``` @@ -166,17 +159,17 @@ class Solution { ```c int maximum69Number(int num) { - int n = 0; - int i = 0; - int t = num; - while (t) { - n++; - if (t % 10 == 6) { - i = n; + char buf[12]; + sprintf(buf, "%d", num); + for (int i = 0; buf[i] != '\0'; i++) { + if (buf[i] == '6') { + buf[i] = '9'; + break; } - t /= 10; } - return num + 3 * pow(10, i - 1); + int ans; + sscanf(buf, "%d", &ans); + return ans; } ``` diff --git a/solution/1300-1399/1323.Maximum 69 Number/README_EN.md b/solution/1300-1399/1323.Maximum 69 Number/README_EN.md index b255ef148389d..f2f5bdb9770c1 100644 --- a/solution/1300-1399/1323.Maximum 69 Number/README_EN.md +++ b/solution/1300-1399/1323.Maximum 69 Number/README_EN.md @@ -29,7 +29,7 @@ tags:
Input: num = 9669 Output: 9969 -Explanation: +Explanation: Changing the first digit results in 6669. Changing the second digit results in 9969. Changing the third digit results in 9699. @@ -67,7 +67,11 @@ The maximum number is 9969. -### Solution 1 +### Solution 1: Greedy + +We convert the number to a string, then traverse the string from left to right to find the first occurrence of $6$, replace it with $9$, and then return the integer corresponding to the converted string. + +Time complexity $O(\log \textit{num})$, space complexity $O(\log \textit{num})$. Where $\textit{num}$ is the given integer. @@ -111,15 +115,8 @@ public: ```go func maximum69Number(num int) int { - s := strconv.Itoa(num) - nums := []byte(s) - for i, ch := range nums { - if ch == '6' { - nums[i] = '9' - break - } - } - ans, _ := strconv.Atoi(string(nums)) + s := strings.Replace(strconv.Itoa(num), "6", "9", 1) + ans, _ := strconv.Atoi(s) return ans } ``` @@ -163,17 +160,17 @@ class Solution { ```c int maximum69Number(int num) { - int n = 0; - int i = 0; - int t = num; - while (t) { - n++; - if (t % 10 == 6) { - i = n; + char buf[12]; + sprintf(buf, "%d", num); + for (int i = 0; buf[i] != '\0'; i++) { + if (buf[i] == '6') { + buf[i] = '9'; + break; } - t /= 10; } - return num + 3 * pow(10, i - 1); + int ans; + sscanf(buf, "%d", &ans); + return ans; } ``` diff --git a/solution/1300-1399/1323.Maximum 69 Number/Solution.c b/solution/1300-1399/1323.Maximum 69 Number/Solution.c index 943cd0198b029..71543fa7af023 100644 --- a/solution/1300-1399/1323.Maximum 69 Number/Solution.c +++ b/solution/1300-1399/1323.Maximum 69 Number/Solution.c @@ -1,13 +1,13 @@ int maximum69Number(int num) { - int n = 0; - int i = 0; - int t = num; - while (t) { - n++; - if (t % 10 == 6) { - i = n; + char buf[12]; + sprintf(buf, "%d", num); + for (int i = 0; buf[i] != '\0'; i++) { + if (buf[i] == '6') { + buf[i] = '9'; + break; } - t /= 10; } - return num + 3 * pow(10, i - 1); -} \ No newline at end of file + int ans; + sscanf(buf, "%d", &ans); + return ans; +} diff --git a/solution/1300-1399/1323.Maximum 69 Number/Solution.go b/solution/1300-1399/1323.Maximum 69 Number/Solution.go index 54efdfb04533b..f07f832736315 100644 --- a/solution/1300-1399/1323.Maximum 69 Number/Solution.go +++ b/solution/1300-1399/1323.Maximum 69 Number/Solution.go @@ -1,12 +1,5 @@ func maximum69Number(num int) int { - s := strconv.Itoa(num) - nums := []byte(s) - for i, ch := range nums { - if ch == '6' { - nums[i] = '9' - break - } - } - ans, _ := strconv.Atoi(string(nums)) + s := strings.Replace(strconv.Itoa(num), "6", "9", 1) + ans, _ := strconv.Atoi(s) return ans -} \ No newline at end of file +}