leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0640.cpp (1021B)


0 class Solution { 1 static pair<int, int> count(const string_view &s) { 2 int x = 0, nums = 0, sign = 1; 3 for (int i = 0; i < size(s); i++) { 4 if (s[i] == '+') 5 sign = 1; 6 else if (s[i] == '-') 7 sign = -1; 8 else { 9 int num = s[i] == 'x' ? 1 : 0; 10 while (isdigit(s[i])) 11 num = num * 10 + s[i++] - '0'; 12 if (s[i] == 'x') 13 x += sign * num; 14 else 15 nums += sign * num, i--; 16 } 17 } 18 19 return {x, nums}; 20 } 21 22 public: 23 string solveEquation(const string &equation) const { 24 const string_view sv(equation); 25 const auto it = sv.find('='); 26 27 const auto [lx, ln] = count({begin(sv), it}); 28 const auto [rx, rn] = count(sv.substr(it + 1)); 29 30 if (lx == rx) return ln == rn ? "Infinite solutions" : "No solution"; 31 return "x=" + to_string((rn - ln) / (lx - rx)); 32 } 33 };