leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java)
2022/1/12 1:04:17
本文主要是介绍leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目
https://leetcode.com/problems/ambiguous-coordinates/
题解
related topics 说是回溯,我偷了个懒,每次都 new 一个新的 String,就不用回溯了。
思路是:把字符串分割成左右两边,分别生成左 list 和右 list,然后左右 list 两两组合。
class Solution { public List<String> ambiguousCoordinates(String s) { StringBuilder num = new StringBuilder(s.substring(1, s.length() - 1)); List<String> result = new ArrayList<>(); // 把num分成左右两半,分别拿到所有可能的数字,然后两两组合 for (int i = 1; i < num.length(); i++) { List<String> left = getList(new StringBuilder(num.substring(0, i))); List<String> right = getList(new StringBuilder(num.substring(i, num.length()))); for (String l : left) { for (String r : right) { result.add("(" + l + ", " + r + ")"); } } } return result; } // 给字符串s加小数点,返回所有可能的结果 public List<String> getList(StringBuilder s) { List<String> result = new ArrayList<>(); for (int i = 1; i < s.length(); i++) { String cur = new StringBuilder(s).insert(i, ".").toString(); if (isValid(cur)) result.add(cur); } if (isValid(s.toString())) result.add(s.toString()); return result; } public boolean isValid(String s) { if (s.startsWith("00") || s.startsWith(".")) return false; if (s.contains(".") && s.endsWith("0")) return false; // 只要以0开头,所有后面不是小数点的字符串,都是耍流氓 if (s.length() > 1 && s.startsWith("0") && s.charAt(1) != '.') return false; return true; } }
这篇关于leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide
- 2025-01-10便捷好用的电商API工具合集
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀