Ở đây, chúng ta thấy Giải pháp cho vấn đề Cơ bản về Máy tính II. Bài toán Leetcode này được thực hiện trên nhiều ngôn ngữ lập trình như C++, Java, JavaScript, Python, v.v. , với các cách tiếp cận khác nhau Danh sách tất cả giải pháp vấn đề LeetCode Máy tính cơ bản II Giải pháp LeetCodeTuyên bố vấn đề ->Đưa ra một chuỗi s đại diện cho một biểu thức, hãy đánh giá biểu thức này và trả về giá trị của nó. Phép chia số nguyên sẽ cắt ngắn về 0 Bạn có thể cho rằng biểu thức đã cho luôn đúng. Tất cả các kết quả trung gian sẽ nằm trong khoảng [-231, 231 – 1] Example 1:
Input: s = "3+2*2"
Output: 7
Example 2:
Input: s = " 3/2 "
Output: 1
Example 3:
Input: s = " 3+5 / 2 "
Output: 5 Máy tính cơ bản II Giải pháp C++ ->class Solution {
public:
int calculate(string s) {
istringstream in('+' + s + '+');
long long total = 0, term = 0, n;
char op;
while (in >> op) {
if (op == '+' or op == '-') {
total += term;
in >> term;
term *= 44 - op;
} else {
in >> n;
if (op == '*')
term *= n;
else
term /= n;
}
}
return total;
}
};
Code language: C++ (cpp)
Giải pháp Java Máy tính cơ bản II ->class Solution {
public int calculate(String s) {
if (s == null || s.length() == 0) return 0;
int num = 0, tmp = 0, res = 0;
char op = '+';
for (char c : s.toCharArray()) {
if (Character.isDigit(c)) {
tmp = tmp*10 + c - '0';
} else if (c != ' ') {
//process the numerical value of string so far; based on what 'op' we have before it
num = cal(num, tmp, op);
if (c == '+' || c == '-') {
res += num;
num = 0;
}
// reset
tmp = 0;
op = c;
}
}
return res + cal(num, tmp, op);
}
private int cal(int num, int tmp, char op) {
if (op == '+') return num + tmp;
else if (op == '-') return num - tmp;
else if (op == '*') return num * tmp;
else return num / tmp;
}
}
Code language: Java (java)
Giải pháp JavaScript cơ bản cho máy tính II ->var calculate = function(s) {
let stack = [];
let num = '';
let sign = null
// we loop till the full length of the array to account for last sign
for(let i = 0; i <= s.length; i++){
const curr = s[i];
//handle space
if(curr === ' ') continue;
//if char is a number
if(!isNaN(curr)) num+=curr;
//if we have a sign + - / *
if(isNaN(curr)){
num = Number(num)
switch(sign){
case '+':
case null:
//we push the initial number into the stack
stack.push(num)
break;
case '-':
//we push any values after the subtraction sign as negative
stack.push(-num)
break;
case '*':
//we pop the stack then multiply and push back
stack.push(stack.pop()*num)
break;
case '/':
//we pop the stack then devide and push back
stack.push(parseInt(stack.pop()/num, 10))
break;
}
// sign becomes current sign
sign = curr;
// we reset num
num = '';
}
}
//we reduce the array adding positive and negative numbers
return stack.reduce((a,b)=>{
return a+b
},0)
};
Code language: JavaScript (javascript)
Giải pháp máy tính cơ bản II Python ->class Solution:
def calculate(self, s: str) -> int:
num = 0
res = 0
pre_op = '+'
s+='+'
stack = []
for c in s:
if c.isdigit():
num = num*10 + int(c)
elif c == ' ':
pass
else:
if pre_op == '+':
stack.append(num)
elif pre_op == '-':
stack.append(-num)
elif pre_op == '*':
operant = stack.pop()
stack.append((operant*num))
elif pre_op == '/':
operant = stack.pop()
stack.append(math.trunc(operant/num))
num = 0
pre_op = c
return sum(stack)
Code language: Python (python)
Giải pháp LeetCode Jump Game IIBạn được cung cấp một mảng số nguyên được lập chỉ mục 0 có độ dài n. Bạn ban đầu… Đọc thêm
Xóa phần tử Giải pháp LeetCodeỞ đây, chúng tôi thấy Giải pháp vấn đề loại bỏ phần tử. Vấn đề Leetcode này được thực hiện trong nhiều chương trình… Đọc thêm Giải pháp LeetCode hai tổngĐưa ra một mảng các số nguyên nums và một mục tiêu số nguyên, trả về các chỉ số của hai… Đọc thêm Pow(x, n) Giải pháp LeetCodeThực hiện pow(x, n), tính toán x lũy thừa n Đọc thêm Giải pháp LeetCode phần tử đa sốCho một mảng có kích thước n, trả về phần tử đa số. Yếu tố đa số là… Đọc thêm Chứa giải pháp LeetCode trùng lặp IIIBạn được cung cấp một mảng số nguyên nums và hai số nguyên indexDiff và valueDiff. Tìm cặp chỉ số (i, j) sao cho. … |