2025-09-23 Daily Challenge
Today I have done leetcode's September LeetCoding Challenge with cpp
.
September LeetCoding Challenge 23
Description
Compare Version Numbers
Given two version strings, version1
and version2
, compare them. A version string consists of revisions separated by dots '.'
. The value of the revision is its integer conversion ignoring leading zeros.
To compare version strings, compare their revision values in left-to-right order. If one of the version strings has fewer revisions, treat the missing revision values as 0
.
Return the following:
- If
version1 < version2
, return -1. - If
version1 > version2
, return 1. - Otherwise, return 0.
Example 1:
Input: version1 = "1.2", version2 = "1.10"
Output: -1
Explanation:
version1's second revision is "2" and version2's second revision is "10": 2 < 10, so version1 < version2.
Example 2:
Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation:
Ignoring leading zeroes, both "01" and "001" represent the same integer "1".
Example 3:
Input: version1 = "1.0", version2 = "1.0.0.0"
Output: 0
Explanation:
version1 has less revisions, which means every missing revision are treated as "0".
Constraints:
1 <= version1.length, version2.length <= 500
version1
andversion2
only contain digits and'.'
.version1
andversion2
are valid version numbers.- All the given revisions in
version1
andversion2
can be stored in a 32-bit integer.
Solution
class Solution {
vector<int> parseVersion(const string &version) {
vector<int> result;
int current = 0;
for(auto c : version) {
if(isdigit(c)) {
current *= 10;
current += c - '0';
} else {
result.push_back(current);
current = 0;
}
}
result.push_back(current);
return result;
}
public:
int compareVersion(string version1, string version2) {
auto v1 = parseVersion(version1);
auto v2 = parseVersion(version2);
while(v1.size() != v2.size()) {
if(v1.size() < v2.size()) {
v1.push_back(0);
} else {
v2.push_back(0);
}
}
if(v1 < v2) return -1;
if(v1 == v2) return 0;
return 1;
}
};
// Accepted
// 89/89 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 38.53 % of cpp submissions (8.5 MB)