我们有一些二维坐标,如 “(1, 3)” 或 “(2, 0.5)”,然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。 原始的坐标表示法不会存在多余的零,所以不会出现类似于”00″, “0.0”, “0.00”, “1.0”, “001”, “00.01”或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。 最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。 示例 1: 提示: 4 <= S.length <= 12. PS:
816. 模糊坐标
输入: “(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 是不被允许的。
S[0] = “(”, S[S.length – 1] = “)”, 且字符串 S 中的其他元素都是数字。
左右分开的暴力解法class Solution { public List<String> ambiguousCoordinates(String S) { int len = S.length(); S = S.substring(1, len - 1); len -= 2; List<String> res = new ArrayList<>(); for(int i = 0; i < len - 1; i++){ List<String> left = helper(S.substring(0, i + 1)); List<String> right = helper(S.substring(i + 1)); if(left.size() == 0 || right.size() == 0){ continue; } for(String l : left){ for(String r : right){ StringBuilder sb = new StringBuilder(); sb.append("(").append(l).append(", ").append(r).append(")"); res.add(sb.toString()); } } } return res; } private List<String> helper(String str){ List<String> list = new ArrayList<>(); int len = str.length(); if(str.charAt(len - 1) == '0'){ if(len == 1){ list.add("0"); } else if(str.charAt(0) != '0'){ list.add(str); } return list; } if(str.charAt(0) == '0'){ list.add("0." + str.substring(1)); return list; } list.add(str); for(int i = 0; i < len - 1; i++){ StringBuilder sb = new StringBuilder(); sb.append(str.substring(0, i + 1)).append('.').append(str.substring(i + 1)); list.add(sb.toString()); } return list; } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算