Leetcode 165 Solution

This article provides solution to leetcode question 165 (compare-version-numbers)

https://leetcode.com/problems/compare-version-numbers

Solution

class Solution { public: void split_version(string version, vector<int>& v) { int cur_pos = 0; do { auto next_pos = version.find_first_of('.', cur_pos);
if (next_pos != string::npos) { v.push_back(stoi(version.substr(cur_pos, next_pos - cur_pos))); cur_pos = next_pos + 1; } else { v.push_back(stoi(version.substr(cur_pos))); cur_pos = next_pos; }
} while (cur_pos != string::npos); }
int compareVersion(string version1, string version2) { vector<int> v1, v2; split_version(version1, v1); split_version(version2, v2);
auto it1 = v1.begin(); auto it2 = v2.begin();
while (it1 != v1.end() || it2 != v2.end()) { if (it1 != v1.end() && it2 != v2.end()) { if (*it1 > *it2) return 1; else if (*it1 < *it2) return -1; } else if (it1 != v1.end() && *it1 != 0) { return 1; } else if (it2 != v2.end() && *it2 != 0) { return -1; }
if (it1 != v1.end()) it1++; if (it2 != v2.end()) it2++; }
return 0; } };