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 }
19 return {x, nums};
20 }
22 public:
23 string solveEquation(const string &equation) const {
24 const string_view sv(equation);
25 const auto it = sv.find('=');
27 const auto [lx, ln] = count({begin(sv), it});
28 const auto [rx, rn] = count(sv.substr(it + 1));
30 if (lx == rx) return ln == rn ? "Infinite solutions" : "No solution";
31 return "x=" + to_string((rn - ln) / (lx - rx));
32 }
33 };