leetcode刷题
时间: 2025-02-18 21:47:29 浏览: 37
### LeetCode编程练习题推荐
#### 基本计算器II
此题目要求实现一个基本的计算器来计算简单的表达式字符串[^1]。表达式字符串仅包含非负整数,`+`, `-`, `*`, `/` 运算符以及开括号 `(` 和闭括号 `)`。
```python
def calculate(s: str) -> int:
def helper(stack, i):
num = 0
sign = '+'
while i < len(s):
c = s[i]
if c.isdigit():
num = num * 10 + int(c)
elif c in "+-*/":
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-1] *= num
elif sign == '/':
stack[-1] = int(stack[-1] / float(num))
num = 0
sign = c
elif c == '(':
num, i = helper([], i + 1)
elif c == ')':
break
i += 1
if sign == '+':
stack.append(num)
elif sign == '-':
stack.append(-num)
elif sign == '*':
stack[-1] *= num
elif sign == '/':
stack[-1] / float(num))
return sum(stack), i
return helper([], 0)[0]
```
#### 判断回文数
提供两种方法判断一个整数是否为回文数。一种是通过反转整个数字并比较原数字与反转后的结果;另一种则是利用双指针法逐位对比字符[^2]。
```python
class Solution:
# 方法一:字符串切片
def isPalindrome(self, x: int) -> bool:
x_str = str(x)
if x_str == x_str[::-1]:
return True
return False
# 方法二: 双指针
def isPalindrome_v2(self, x: int) -> bool:
x_str = str(x)
left, right = 0, len(x_str) - 1
while left < right:
if x_str[left] != x_str[right]:
return False
left += 1
right -= 1
return True
```
#### 两数之和
在一个整数数组中找到两个不同的索引位置使得这两个位置对应的数值相加等于指定的目标值,并返回这两个索引的位置[^3]。
```python
from typing import List
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for index, value in enumerate(nums):
diff = target - value
if diff in hashmap:
return [hashmap[diff], index]
hashmap[value] = index
```
阅读全文
相关推荐















