20250614 finished.
This commit is contained in:
parent
b70046b7da
commit
88959d6513
|
@ -0,0 +1,71 @@
|
|||
/**
|
||||
* [2566] Maximum Difference by Remapping a Digit
|
||||
*/
|
||||
#include <bits/stdc++.h>
|
||||
#include <gtest/gtest.h>
|
||||
using namespace std;
|
||||
|
||||
|
||||
// submission codes start here
|
||||
|
||||
class Solution
|
||||
{
|
||||
public:
|
||||
int minMaxDifference(int num)
|
||||
{
|
||||
const string numString = to_string(num);
|
||||
|
||||
// Select the first not 9 number when converting to maximum value.
|
||||
int targetPos = 0;
|
||||
while (targetPos < numString.size() - 1)
|
||||
{
|
||||
if (numString[targetPos] != '9')
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
targetPos += 1;
|
||||
}
|
||||
|
||||
int maxNum = 0;
|
||||
|
||||
char targetChar = numString[targetPos];
|
||||
for (const auto c : numString)
|
||||
{
|
||||
if (c == targetChar)
|
||||
{
|
||||
maxNum = maxNum * 10 + 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
maxNum = maxNum * 10 + c - '0';
|
||||
}
|
||||
}
|
||||
|
||||
// The minimum value is replacing the first number into zero.
|
||||
|
||||
targetChar = numString[0];
|
||||
int minNum = 0;
|
||||
for (const auto c : numString)
|
||||
{
|
||||
if (c == targetChar)
|
||||
{
|
||||
minNum = minNum * 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
minNum = minNum * 10 + c - '0';
|
||||
}
|
||||
}
|
||||
|
||||
return maxNum - minNum;
|
||||
}
|
||||
};
|
||||
|
||||
// submission codes end
|
||||
|
||||
TEST(P2566, Test1)
|
||||
{
|
||||
ASSERT_EQ(99009, Solution().minMaxDifference(11891));
|
||||
ASSERT_EQ(99, Solution().minMaxDifference(90));
|
||||
}
|
|
@ -10,9 +10,8 @@ using namespace std;
|
|||
|
||||
__PROBLEM_DEFAULT_CODE__
|
||||
|
||||
// submission codes endo
|
||||
// submission codes end
|
||||
|
||||
TEST(__TEST_CASE_NAME__, Test1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user