打卡记录
改变一个整数能得到的最大差值(贪心)
链接
得到最大的整数,找到一个高位将它修改为 9。同理,想要得到最小的整数,找到一个高位将它修改为 0。
class Solution {
public:int maxDiff(int num) {auto replace = [&](string& s, char x, char y) -> void {for (char& ch : s)if (ch == x) ch = y;};string a = to_string(num);string b(a);for (char& ch : a)if (ch != '9') {replace(a, ch, '9');break;}for (int i = 0; i < b.size(); ++i) {if (!i) {if (b[i] != '1') {replace(b, b[i], '1');break;}}else {if (b[i] != '0' && b[i] != b[0]) {replace(b, b[i], '0');break;}}}return stoi(a) - stoi(b);}
};
有效时间的数目(组合数学)
链接
class Solution {int count(string t, int period) {int ans = 0;for (int i = 0; i < period; i++)if ((t[0] == '?' || i / 10 == t[0] - '0') &&(t[1] == '?' || i % 10 == t[1] - '0'))ans++;return ans;}
public:int countTime(string time) {return count(time.substr(0, 2), 24) * count(time.substr(3), 60);}
};