[{"createTime":1735734952000,"id":1,"img":"hwy_ms_500_252.jpeg","link":"https://activity.huaweicloud.com/cps.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905","name":"华为云秒杀","status":9,"txt":"华为云38元秒杀","type":1,"updateTime":1735747411000,"userId":3},{"createTime":1736173885000,"id":2,"img":"txy_480_300.png","link":"https://cloud.tencent.com/act/cps/redirect?redirect=1077&cps_key=edb15096bfff75effaaa8c8bb66138bd&from=console","name":"腾讯云秒杀","status":9,"txt":"腾讯云限量秒杀","type":1,"updateTime":1736173885000,"userId":3},{"createTime":1736177492000,"id":3,"img":"aly_251_140.png","link":"https://www.aliyun.com/minisite/goods?userCode=pwp8kmv3","memo":"","name":"阿里云","status":9,"txt":"阿里云2折起","type":1,"updateTime":1736177492000,"userId":3},{"createTime":1735660800000,"id":4,"img":"vultr_560_300.png","link":"https://www.vultr.com/?ref=9603742-8H","name":"Vultr","status":9,"txt":"Vultr送$100","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":5,"img":"jdy_663_320.jpg","link":"https://3.cn/2ay1-e5t","name":"京东云","status":9,"txt":"京东云特惠专区","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":6,"img":"new_ads.png","link":"https://www.iodraw.com/ads","name":"发布广告","status":9,"txt":"发布广告","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":7,"img":"yun_910_50.png","link":"https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=aXhpYW95YW5nOA===&utm_medium=cps&utm_campaign=201905","name":"底部","status":9,"txt":"高性能云服务器2折起","type":2,"updateTime":1735660800000,"userId":3}]
动态规划保存是否是回文串结果法
class Solution(object): def partition(self, s): """ :type s: str :rtype:
List[List[str]] """ res, sol = [],[] n = len(s) f = [[True]*n for i in range(n)]
for i in range(n-1,-1,-1): #倒序的目的是因为最后一行应该全是正确的,倒数第二行(n-2)开始比较两个字符是否相同,
#只需比较[n-2][n-1]也就是最后两个字符是否是回文。之后根据状态方程进行迭代比较 for j in range(i+1 , n): f[i][j] =
(s[i] == s[j]) and f[i+1][j-1] def backtrack(s, begin): if begin == n: res.
append(sol[:]) return for k in range(begin,n): if not f[begin][k]: continue sol.
append(s[begin:k+1]) backtrack(s,k+1) sol.pop() backtrack(s,0) return res
调用递归判断
class Solution(object): def partition(self, s): """ :type s: str :rtype:
List[List[str]] """ res, sol = [],[] n = len(s) def reverse(tmp): i,j = 0,len(
tmp)-1 while i < j: if tmp[i] != tmp[j]: return 0 i += 1 j -= 1 return 1 def
backtrack(s, begin): if begin == n: res.append(sol[:]) return for k in range(
begin,n): tmp = s[begin:k+1] if reverse(tmp) == 0: continue sol.append(tmp)
backtrack(s,k+1) sol.pop() backtrack(s,0) return res