LeetCode 每日一题——816. 模糊坐标

news2025/4/19 20:12:01

1.题目描述

816. 模糊坐标

我们有一些二维坐标,如 “(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 是不被允许的。

2.解题思路与代码

2.1 解题思路

首先我们需要将原字符串中的数字进行切分,然后分别将小数点放到前后两端数字的各个位置上,分别枚举出前后两半符合要求的字符串列表,此时难点就在于对前后两半字符串进行判断时,小数点所放的位置。

  • 如果数字不包含 0 ,就需要依次放入小数点进行判断
  • 如果包含 0,则要看 0 的位置。如果 0 在前面那么只能在第一个 0 后面放小点,也就是只有一种结果
  • 如果 0 在最后也只能有不加小数点这一种结果

以 (123) 为例,首先我们将原字符串分成 1 和 23 两半,然后先判断前半段 1,此时只有一个数字 1;然后判断后半段的 23,此时 23 可以不放小数点或者在中间放小数点,因此存在结果 23 和 2.3 。再看 (00011) ,如果分为 0 和 0011 时,前半截只有结果 0 ,后半截也只有 0.011这一个结果。在得到原字符串前后两半结果列表之后,我们分别遍历两个列表进行组合,放入结果列表中返回即可。

2.2 代码

class Solution {
    public List<String> ambiguousCoordinates(String s) {
        s = s.substring(1, s.length()-1);
        List<String> ans = new ArrayList<>();
        for (int i = 1; i < s.length(); i++) {
            List<String> list1 = getString(s.substring(0, i));
            List<String> list2 = getString(s.substring(i));
            for (String s1 : list1) {
                for (String s2 : list2) {
                    ans.add("(" + s1 + ", " + s2 + ")");
                }
            }
        }
        return ans;
    }

    public List<String> getString(String s) {
        List<String> ans = new ArrayList<>();
        if (s.charAt(0) != '0' || s.equals("0")) {
            ans.add(s);
        }
        if (s.charAt(s.length() - 1) == '0') {
            return ans;
        }
        for (int i = 1; i < s.length(); i++) {
            if (i != 1 && s.charAt(0) == '0') {
                continue;
            }
            ans.add(s.substring(0, i) + "." + s.substring(i));
        }
        return ans;

    }
}

2.3 测试结果

通过测试
测试结果

3.总结

  • 拆分字符串分成前后两半分别判断
  • 判断放入小数点组成新数字时需要注意 0 的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5_会话管理实现登录功能

一 会话管理登录功能 前置了解 初识cookie 如下图,浏览器初次访问服务器时,服务器生成数据将数据存放在浏览器的cookie中,当浏览器再次访问服务器时将会携带该cookie,此时服务器就可以确定该浏览器的身份了。 session的使用 如下图,session的实现需要借助cookie,不同cookie的是…

荧光标记氨基酸:荧光标记L-苯丙氨酸乙酯盐酸盐,L-phenylalanine ethylester labeled

产品名称&#xff1a;荧光标记L-苯丙氨酸乙酯盐酸盐&#xff0c;L-phenylalanine ethylester labeled L-苯丙氨酸乙酯盐酸盐是化学物质&#xff0c;分子式是C11H16NO2。别名L-苯基丙氨酸乙酯盐酸盐&#xff0c;熔点: 154-157&ordm;C&#xff0c;比旋光度: 33.7&ordm;(…

使用myCobot 280机械臂校准OAK智能深度相机

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

第三站:函数(第三幕)递归训练

目录 一、编写一个函数实现n的k次方&#xff0c;使用递归实现。&#xff08;k为整数&#xff09; 二、写一个递归函数DigitSum(n)&#xff0c;输入一个非负整数&#xff0c;返回组成它的数字之和 三、编写一个函数 reverse_string(char * string)&#xff08;递归实现&#x…

WebDAV之葫芦儿·派盘+墨阅

墨阅 支持webdav方式连接葫芦儿派盘。 是一款专注于帮助用户离线缓存网页文档图书漫画的免费工具APP。您可以利用墨阅收集来自互联网网站平台的公开文章,图片,漫画等,可以对网页样式进行调整,支持自定义动作,批量离线等功能方便用户日常离线。目前支持小说,markdown,图…

公众号搜题系统

公众号搜题系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳转…

语义分割之RTFormer介绍

语义分割之RTFormer介绍 论文链接&#xff1a;https://arxiv.org/abs/2210.07124 代码地址&#xff1a;https://github.com/PaddlePaddle/PaddleSeg ViT以来&#xff0c;Transformer作为特征提取器在语义分割领域证明了自己&#xff0c;但是由于Transformer的核心 muti-self-…

苹果电脑提高工作效率alfred 5中文

Mac电脑上哪个效率工具好用呢&#xff1f;alfred 5是最强大的效率启动工具之一&#xff0c;丰富的插件资源、简单的上手成本&#xff0c;会是你提高 Mac 使用效率的得力助手。可通过热键&#xff0c;关键字&#xff0c;文本扩展等提高您的效率。搜索您的Mac和网络&#xff0c;并…

Sprint产品待办列表的优先级要怎么排?

在梳理产品待办事项列表的过程中&#xff0c;产品负责人需要先做优先级排列&#xff0c;保证我们在一定的时间盒内能够交付需要优先级最高、最具价值的用户故事。 那这个用户故事的优先级要怎么排列&#xff0c;我们怎样选择用户故事的实现顺序&#xff1f; 有一个实践可以推…

力扣(LeetCode)816. 模糊坐标(C++)

模拟 一次遍历 sss &#xff0c;尝试对遍历到的位置进行分割。对分割点左右字符串 ltltlt , rtrtrt 分别构造子串。 构造子串的规则: 整数不以 000 开头&#xff0c;(特例)单独的 000 可以作为整数。小数不以 000 结尾。小数的整数位是 000 &#xff0c;则整数位不能组成新数…

怎么给PDF添加页面?推荐三个PDF如何插入页面小妙招

在我们生活中&#xff0c;平时接触PDF文件可能没有接触Word文件那么的多。像处理PDF文件这种问题上并没有Word文件那么的容易&#xff0c;毕竟PDF它不易进行内容编辑。这时候如果有小伙伴需要对PDF文件进行修改或者进行插入页面&#xff0c;但是PDF文件是无法直接进行修改的。那…

做期货的阶段(做期货的几个阶段)

如何自己做好期货 学习交易大致有三阶段&#xff1a;直观直觉阶段&#xff0c;看到涨就做多&#xff0c;看到跌就做空&#xff0c;结果半赢半输&#xff1b;学习积累的阶段&#xff0c;看到涨跌不觉涨跌&#xff0c;想得很多&#xff0c;结果赢少赔多&#xff1b;领悟后再次直…

软件架构师考试的真实感受

近1个半月&#xff0c;因准备了软件架构师的考试&#xff0c;停了BLOG&#xff0c;今天想写点东西作为阶段性的沉淀。 节奏紧 和软设比起来&#xff0c;最直观的感受就是节奏紧&#xff0c;软设上午通常能够提前一个小时考完&#xff0c;加上下午2点才开考&#xff0c;中间有…

Java UML 类图

继承 继承&#xff1a;重用父类的某些功能 缺点&#xff1a;强耦合 耦合&#xff1a;修改一方&#xff0c;会影响另一方 应用&#xff1a;是否需要“向上转型” 接口 行为的抽象、可跨越不同的类 不包含实现实现类需完全实现可实现多个接口 是一种“自顶向下”的设计&…

C++多态(1)

目录1. 多态的概念2. 多态的定义和实现2.1 多态的构成条件2.1.1 重写2.2.2 指针或者引用2.2 虚函数重写的两个例外2.3 多态里的一个不规范的地方2.4 重载、重写&#xff08;覆盖&#xff09;、隐藏&#xff08;重定义&#xff09;的对比3. C11 override 和 final1. 多态的概念 …

QSS编辑器QssEditor之三:Ribbon控件与换肤

一.Ribbon控件 Ribbon控件即Office样式UI,Ribbon控件有许多开源实现,例如:Qt优秀开源项目之三:SARibbon SARibbon功能强大,但以学习为目的的话,我们可以自己去实现一个简单的。基本思路是自定义QTabWidget,然后通过QSS调整样式。 如上图所示,我们可以实现一个类QHRi…

IP数据报首部字段、TCP报文段首部字段

文章目录 IP数据报首部字段IP数据报格式TCP报文段首部字段IP数据报首部字段 首部字段功能1.版本是IPv4还是IPv62.首部长度IP数据报首部的长度3.服务类型4.总长度IP数据报的总长度。若总长度>该网段的MTU,则需要分片。分片后IP数据报的总长度必然发生改变。5.标识保证IP分组…

C++--模板

目录 泛型编程 函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 泛型编程 不再是针对某种类型&#xff0c;而是能适…

[python]用flask框架搭建微信公众号的后台

用flask框架搭建微信公众号的后台 最近用python写了点爬虫&#xff0c;为了要让爬取的数据能够随时显示在我眼前&#xff0c;并实时根据我的指令返回数据。于是采用微信公众号做这个显示窗口&#xff0c;既能发送指令也能显示简单的相关数据。 准备工具 python3.x环境 pycharm…

vue3与vue2的不同内容

一、main.js入口文件的不同 // 引入的不再是构造函数&#xff0c;引入了一个名为creacteApp的工厂函数 import { createApp } from vue import ./style.css import App from ./App.vue // 创建应用示例对象--->app const app createApp(App) //把组件APP挂载到#app节点上 …