力扣每日一题 模糊坐标

Day 40

Date: November 7, 2022 4:44 PM
Title: 模糊坐标
Link:https://leetcode.cn/problems/ambiguous-coordinates/description/

枚举,切片

class Solution:
    def ambiguousCoordinates(self, s: str) -> List[str]:
        def get_p(st: str) -> List[str]:
            pos = [] # 初始化
            if st[0] != '0' or st == '0':#找合法整数 第一个字符为0或者 就是0时 划分的整个st符合条件 
                pos.append(st)
            for p in range(1, len(st)): # (0 - p-1, p - 最后一个)找合法小数
                if  p != 1 and st[0] == '0' or st[-1] == '0':# 如果有前导0并且p不为1(即切片小数点前存在0x的形式)或最后一位数为0的情况下,就肯定不符合小数切片直接退出循环
                    break
                pos.append(st[:p] + '.' + st[p:])# 划分为小数
            return pos # 
        
        n = len(s) - 2 # 除去左右括号
        result = [] #存储所有坐标
        s = s[1: len(s) - 1]
        for x in range(1, n):# x(0 - x-1)坐标,y(x, 最后一个数)坐标的切片位置
            lt = get_p(s[:x])
            if len(lt) == 0: # x坐标在此位置切片没有合法的数 
                continue
            rt = get_p(s[x:]) # y坐标在此位置切片没有合法的数 
            if len(rt) == 0:
                continue
            for i, j in product(lt, rt):# 当前位置切片合法的x, y 的所有排列组合 
                result.append('(' + i + ', ' + j + ')')
        return result

**product()**用于求多个可迭代对象的笛卡尔积
(Cartesian Product),它跟嵌套的 for 循环等价.

即:product(A, B) 和

((x,y) for x in A for y in B)一样.

也就是for x in A:

       **for y in B:**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只惠摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值