Technology sharing

C | . Leetcode C Problem Solution No

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Argumentum:

respondeo:

  1. class Solution {
  2. public:
  3. int calculate(string s) {
  4. stack<int> ops;
  5. ops.push(1);
  6. int sign = 1;
  7. int ret = 0;
  8. int n = s.length();
  9. int i = 0;
  10. while (i < n) {
  11. if (s[i] == ' ') {
  12. i++;
  13. } else if (s[i] == '+') {
  14. sign = ops.top();
  15. i++;
  16. } else if (s[i] == '-') {
  17. sign = -ops.top();
  18. i++;
  19. } else if (s[i] == '(') {
  20. ops.push(sign);
  21. i++;
  22. } else if (s[i] == ')') {
  23. ops.pop();
  24. i++;
  25. } else {
  26. long num = 0;
  27. while (i < n && s[i] >= '0' && s[i] <= '9') {
  28. num = num * 10 + s[i] - '0';
  29. i++;
  30. }
  31. ret += sign * num;
  32. }
  33. }
  34. return ret;
  35. }
  36. };