python枚举算法题目
Python枚举算法题目
枚举算法是一种基础的算法,它的作用是在一组可能性中逐一尝试,以到符合条件的解。在Python中,可以使用for循环和range函数来实现枚举算法。
下面是几个常见的Python枚举算法题目:
1. 出列表中两个数之和等于指定值的索引
题目描述:给定一个整数列表和一个目标值,出列表中两个数之和等于目标值,并返回这两个数的索引。
解题思路:使用嵌套循环遍历列表,对于每个元素,都遍历一次其后面的所有元素,并判断它们之和是否等于目标值。
代码实现:
```
def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
```
2. 出字符串中最长回文子串
题目描述:给定一个字符串,出其中最长的回文子串。
解题思路:使用嵌套循环遍历字符串,对于每个字符,都从它开始向左右两边扩展,并判断扩展后的子串是否为回文串。如果是,则更新最长回文子串。
代码实现:
快速排序python实现```
def longestPalindrome(s):
max_len = 0
max_str = ""
for i in range(len(s)):
for j in range(i, len(s)):
if s[i:j+1] == s[i:j+1][::-1] and j-i+1 > max_len:
max_len = j-i+1
max_str = s[i:j+1]
return max_str
```
3. 出两个字符串的最长公共子串
题目描述:给定两个字符串,出它们的最长公共子串。
解题思路:使用嵌套循环遍历两个字符串,对于每个字符,都比较它们是否相同。如果相同,则继续比较下一个字符,并记录当前的最长公共子串。如果不同,则重新开始比较。
代码实现:
```
def longestCommonSubstring(s1, s2):
m = len(s1)
n = len(s2)
dp = [[0] * (n+1) for _ in range(m+1)]
max_len = 0
max_str = ""
for i in range(1, m+1):
for j in range(1, n+1):
if s1[i-1] == s2[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
if dp[i][j] > max_len:
max_len = dp[i][j]
max_str = s1[i-max_len:i]
else:
dp[i][j] = 0
return max_str
```
4. 出数组中第k小的元素
题目描述:给定一个无序数组和一个整数k,出第k小的元素。
解题思路:使用快速排序算法,每次选取一个pivot元素将数组分为两部分,并比较pivot元素的索引和k的大小关系。如果pivot元素的索引小于k,则在右半部分继续查;否则在左半部分继续查。直到到第k小的元素为止。
代码实现:
```
def quickSelect(nums, k):
def partition(left, right):
pivot = nums[left]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论