Skip to content

Latest commit

 

History

History
109 lines (84 loc) · 3.56 KB

816-ambiguous-coordinates.md

File metadata and controls

109 lines (84 loc) · 3.56 KB

816. Ambiguous Coordinates - 模糊坐标

我们有一些二维坐标,如 "(1, 3)" 或 "(2, 0.5)",然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。

原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", "0.0", "0.00", "1.0", "001", "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。

最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。

 

示例 1:
输入: "(123)"
输出: ["(1, 23)", "(12, 3)", "(1.2, 3)", "(1, 2.3)"]
示例 2:
输入: "(00011)"
输出:  ["(0.001, 1)", "(0, 0.011)"]
解释: 
0.0, 00, 0001 或 00.01 是不被允许的。
示例 3:
输入: "(0123)"
输出: ["(0, 123)", "(0, 12.3)", "(0, 1.23)", "(0.1, 23)", "(0.1, 2.3)", "(0.12, 3)"]
示例 4:
输入: "(100)"
输出: [(10, 0)]
解释: 
1.0 是不被允许的。

 

提示:

  • 4 <= S.length <= 12.
  • S[0] = "(", S[S.length - 1] = ")", 且字符串 S 中的其他元素都是数字。

 


题目标签:String

题目链接:LeetCode / LeetCode中国

题解

Language Runtime Memory
python3 84 ms 13.2 MB
class Solution:
    def ambiguousCoordinates(self, S: str) -> List[str]:

        # 判断是否为合法数字
        def valid(s):
            if s == '0':
                return True
            if s.startswith('.') or s.endswith('.'):
                return False
            if s.startswith('0') and not s.startswith('0.'):
                return False
            if s.endswith('0'):
                return '.' not in s
            return True
        
        S = S[1:-1]
        res = []
        for i in range(1, len(S)):
            # 添加逗号
            xs, ys = [], []
            x, y = S[:i], S[i:]
            # 添加小数点
            if valid(x):
                xs.append(x)
            if valid(y):
                ys.append(y)
            if len(x) > 1:
                for ix in range(1, len(x)):
                    tx = x[:ix] + '.' + x[ix:]
                    if valid(tx):
                        xs.append(tx)
            if len(y) > 1:
                for iy in range(1, len(y)):
                    ty = y[:iy] + '.' + y[iy:]
                    if valid(ty):
                        ys.append(ty)
            for xsi in xs:
                for ysi in ys:
                    res.append('(' + xsi + ', ' + ysi + ')')
        return res