LeetCode 65. 有效数字(逻辑题,难)

1. 题目

验证给定的字符串是否可以解释为十进制数字。

例如:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false
说明: 我们有意将问题陈述地比较模糊。
在实现代码之前,你应当事先思考所有可能的情况。
这里给出一份可能存在于有效十进制数字中的字符列表:数字 0-9
指数 - "e"/负号 - "+"/"-"
小数点 - "."
当然,在输入中,这些字符的上下文也很重要。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

《剑指Offer》同题:面试题20. 表示数值的字符串

2. 解题

  • 先找指数e,E的位置,将字符切分成前后2部分
  • 判断前后,都必须要有数字,不能有其他非法字符
  • 前后+ -号必须在第一位
  • 后半部不能有点.
class Solution {
public:bool isNumber(string s) {//去除尾部空格while(!s.empty() && s.back() == ' ')s.pop_back();while(!s.empty() && s.front() == ' ')s.erase(s.begin());//忽略头部空格if(s.empty())return false;int idx1 = s.find('E');int idx2 = s.find('e');if(idx1 == -1 && idx2 == -1)return check1(s);//没有指数,直接判断数字if(idx1 != -1)//找到指数,分成两半检查(s1)E(s2)return (check1(s.substr(0,idx1)) && check2(s.substr(idx1+1)));else	//找到指数,分成两半检查(s1)e(s2)return (check1(s.substr(0,idx2)) && check2(s.substr(idx2+1)));}bool check1(string s) {	//前半部分if(s.empty())return false;int dot = 0;bool number = false;for(int i = 0; i < s.size(); i++){if((s[i]=='+' || s[i] == '-')){	//符号不在第一位if(i != 0)return false;}else if(s[i] == '.')dot++;else if(isdigit(s[i]))number = true;else//其他字符return false;}if(dot > 1 || !number)return false;return true;}bool check2(string s){	//检查后半部分,不能有 . 点if(s.empty())return false;bool number = false;for(int i = 0; i < s.size(); i++){if((s[i]=='+' || s[i] == '-')){	//符号不在首if(i != 0)return false;}else if(s[i] == '.')//指数不能有点return false;else if(isdigit(s[i]))number = true;else//其他字符return false;}if(!number)return false;return true;}
};

在这里插入图片描述

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

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

相关文章

Mock Server实践

背景 在美团服务端测试中&#xff0c;被测服务通常依赖于一系列的外部模块&#xff0c;被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试&#xff0c;一般做法是&#xff0c;部署好所有外部依赖模块&#xff0c;由被测服务直接调用。然而有…

美团上交开源PromptDet:无需标注,开放世界的目标检测器

文 | 冯承健源 | 极市平台本文提出了一个开放世界的目标检测器PromptDet&#xff0c;它能够在没有任何手动标注的情况下检测新类别&#xff08;如下图绿色检测框&#xff09;&#xff0c;其中提出区域prompt学习方法和针对网络图像的自训练方法&#xff0c;性能表现SOTA。主页&…

Docker系列之二:基于容器的自动构建

自动构建系统是从美团的自动部署系统发展出来的一个新功能。每当开发人员提交代码到仓库后&#xff0c;系统会自动根据开发人员定制的构建配置&#xff0c;启动新的Docker容器&#xff0c;在其中对源代码进行构建&#xff08;build&#xff09;&#xff0c;包括编译&#xff08…

剑指Offer - 面试题56 - I. 数组中数字出现的次数(异或,分组)

1. 题目 一个整型数组 nums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。 要求时间复杂度是O(n)&#xff0c;空间复杂度是O(1)。 示例 1&#xff1a; 输入&#xff1a;nums [4,1,4,6] 输出&#xff1a;[1,6] 或 [6,1]示例 2&a…

自动驾驶技术简史

文 | Bernard_Han自动驾驶是一个最近在产业界炙手可热的关键词。无论是与人工智能相关的顶级会议还是各大造车厂商甚至各大投资商都为这个成长初期的蓝海产业下注了美好的未来。但是“汽车自动化”的理论与自动驾驶不同&#xff0c;提出至今已有近百年的历史。从最初的遥控到如…

你是什么时候对深度学习失去信心的?

文 | 霍华德源 | 知乎最近几天在知乎上有个问题火了&#xff1a;你是什么时候对深度学习失去信心的&#xff1f;在此推荐一下知乎大V霍华德的回答&#xff0c;以下为原回答。对于深度学习的现状&#xff0c;工业界还是很清楚的。如果没有变革性的突破&#xff0c;弱人工智能时代…

OpenTSDB 造成 Hbase 整点压力过大问题的排查和解决

业务背景 OpenTSDB 是一款非常适合存储海量时间序列数据的开源软件&#xff0c;使用 HBase 作为存储让它变的非常容易扩展。我们在建设美团性能监控平台的过程中&#xff0c;每天需要处理数以亿计的数据&#xff0c;经过几番探索和调研&#xff0c;最终选取了 OpenTSDB 作为数据…

LintCode 183. 木材加工(二分查找)

1. 题目 有一些原木&#xff0c;现在想把这些木头切割成一些长度相同的小段木头&#xff0c;需要得到的小段的数目至少为 k。当然&#xff0c;我们希望得到的小段越长越好&#xff0c;你需要计算能够得到的小段木头的最大长度。 样例 1 输入: L [232, 124, 456] k 7 输出: …

AC算法在美团上单系统的应用

1.背景 在美团&#xff0c;为了保证单子质量&#xff0c;需要对上单系统创建的每一个产品进行审核。为了提高效率&#xff0c;审核人员积累提炼出了一套关键词库&#xff0c;先基于该词库进行自动审核过滤&#xff0c;对于不包括这些关键词的产品信息不再需要进行人工审核。因此…

LintCode 600. 包裹黑色像素点的最小矩形(BFS)

1. 题目 一个由二进制矩阵表示的图&#xff0c;0 表示白色像素点&#xff0c;1 表示黑色像素点。 黑色像素点是联通的&#xff0c;即只有一块黑色区域。 像素是水平和竖直连接的&#xff0c;给一个黑色像素点的坐标 (x, y) &#xff0c;返回囊括所有黑色像素点的矩阵的最小面积…

浙大、阿里提出DictBERT,字典描述知识增强的预训练语言模型

文 | 刘聪NLP源 | NLP工作站写在前面大家好&#xff0c;我是刘聪NLP。今天给大家带来一篇IJCAI2022浙大和阿里联合出品的采用对比学习的字典描述知识增强的预训练语言模型-DictBERT&#xff0c;全名为《Dictionary Description Knowledge Enhanced Language Model Pre-training…

LintCode 207. 区间求和 II(线段树)

1. 题目 在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value): 对于 query(start, end), 返回数组中下标 start 到 end 的 和。对于 modify(index, value), 修改数组中下标为 index 上的数为 value. 样例1 输入: [1,2,7,8,5] [query(0…

深入解析String#intern

在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快&#xff0c;更节省内存&#xff0c;都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的&#xff0c;String类型的常量池…

想通这点,治好 AI 打工人的精神内耗

文 | 天于刀刀受到疫情影响&#xff0c;今年公司的校招生报道日还未到来&#xff0c;23 年的秋招提前批就已经是如火如荼地开展。而诸神黄昏算法岗&#xff0c;作为招聘中最靓眼的仔&#xff0c;简历门槛早已是硕士打底博士起步&#xff0c;项目竞赛多多益善的情况了。面临着今…

DHL

有句俗语谓&#xff1a;“不看不知道&#xff0c;一看吓一跳”&#xff0c;这次通过“中外运-敦豪”的一次快递&#xff0c;亲身感受到这种“吓一跳”的滋味。 MS 总部从 1 月 26 日寄出 MVP Award 快递包之后&#xff0c;在随后的电子邮件中给出了每个人的 DHL 快件追踪号&…

数据结构--树--线段树(Segment Tree)

文章目录1. 概念2. 建树3. 查询4. 修改5. 完整代码及测试上图 from 熊掌搜索 类似数据结构&#xff1a;树状数组 1. 概念 线段树是一种二叉树&#xff0c;是用来表示一个区间的树&#xff1a; 常常用来查询区间的&#xff1a;和、最小值、最大值树结点中存放不是普通二叉树的…

神经网络可视化有3D版本了,美到沦陷!(已开源)

源 |量子位做计算机视觉&#xff0c;离不开CNN。可是&#xff0c;卷积、池化、Softmax……究竟长啥样&#xff0c;是怎样相互连接在一起的&#xff1f;对着代码凭空想象&#xff0c;多少让人有点头皮微凉。于是&#xff0c;有人干脆用Unity给它完整3D可视化了出来。还不光是有个…

CentOS6上Hadoop集群中服务器cpu sys态异常的定位与解决

问题现象 在zabbix系统中&#xff0c;对Hadoop集群的历史监控数据分析时&#xff0c;发现在执行大Job任务时&#xff0c;某些服务节点的cpu sys态很高&#xff1b;具体以hadoop_A服务节点为例&#xff0c;在10:15-10:40这个时间段&#xff0c;cpu user态为60%&#xff0c;而sys…

偶也Blog了

欢迎大家和我交流…………转载于:https://www.cnblogs.com/dsclub/archive/2004/06/18/16753.html

LintCode 1692. 组队打怪(田忌赛马,二分查找)

1. 题目 你现在有n个英雄&#xff0c;每个英雄的战斗力为 atk1,你要用这些英雄去对付n个怪物&#xff0c;每个怪物的战斗力为atk2。 在一场战斗中&#xff0c;你需要安排每个英雄分别与一个怪兽战斗&#xff0c;如果英雄战斗力高于怪兽&#xff0c;那个怪兽就会被击杀&#xf…