欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

20220228

时间:2023-07-04
1.乘积最大子数组【数组】【动态规划】

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

示例 1:

输入: [2,3,-2,4]
输出: 
6

解释: 子数组 [2,3] 有最大乘积 6。


示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。

from typing import Listclass Solution: def maxProduct(self, nums: List[int]) -> int: if len(nums) == 0: return 0 length = len(nums) dp = [[0] * 2 for _ in range(length)] dp[0][0] = nums[0] dp[0][1] = nums[0] for i in range(1, length): if nums[i] > 0: dp[i][0] = min(nums[i], dp[i - 1][0] * nums[i]) dp[i][1] = max(nums[i], dp[i - 1][1] * nums[i]) else: dp[i][0] = min(nums[i], dp[i - 1][1] * nums[i]) dp[i][1] = max(nums[i], dp[i - 1][0] * nums[i]) res = dp[0][1] for i in range(1, length): res = max(res, dp[i][1]) return resif __name__ == '__main__': s=Solution() print(s.maxProduct([2,3,-2,4]))

2.任意多行字符串拆分数值求和【算法高阶】【字符串匹配】

编写程序,统计每行字符串中若干整数的和。每行字符串中整数间的分隔符可能有逗号“,”、分号“ ;”和空格,有多少行就求多少行。
输入格式:
任意输入若干行由整数构成的字符串(回车换行),整数间以逗号或空格或分号分隔。测试数确保至少有一行数据,字符串中的整数数据均合法有效。最后以一个回车结束输入。
输出格式:
对应输出原输入串(一行中的字符序列),冒号后输出各个整数之和。


输入样例:

1; 2 ,3
2 3; 4
10,20 30; 40
9

输出样例:

1; 2 ,3:6
2 3; 4:9
10,20 30; 40:100

stopword = ''s = ''print('请输入内容,输入空行回车结束输入:')for line in iter(input, stopword): s = s + line + "n"print(s)l = s.splitlines()for num in range(0, len(l)): one = l[num].replace(',', ' ').replace(';', ' ').split() onesum = 0 for i in range(0, len(one)): onesum = onesum + int(one[i]) print(l[num] + ":" + str(onesum))

3.最短回文串【字符串】【字符串匹配】

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

示例 1:

输入:s = "aacecaaa"
输出:"aaacecaaa"


示例 2:

输入:s = "abcd"
输出:"dcbabcd"


 

提示:

0 <= s.length <= 5 * 104
s 仅由小写英文字母组成

class Solution: def shortestPalindrome(self, s: str) -> str: N = len(s) idx1 = 0 for idx2 in range(N - 1, -1, -1): if s[idx1] == s[idx2]: idx1 += 1 if idx1 == N: return s return s[idx1:][::-1] + self.shortestPalindrome(s[:idx1]) + s[idx1:]s=Solution()print(s.shortestPalindrome('aabcdeef'))

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。