字符串09--表示数值的字符串

2023-11-19

字符串09--表示数值的字符串-jz53

题目概述

  • 算法说明
    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
  • 测试用例
    输入:“123.45e+6”
    返回值:true
    示例2
    输入:“1.2.3”
    返回值:false

解析&参考答案

  • 解析
    字符串可以表示为 A[.[B]][e|EC], 其中 A 是数值部分, B 紧跟者小数点为数值的小数部分, C 为紧跟这 e 或者 E 数值的指数部分。
  • 参考答案
vim jz53.go
package main

import (
	"fmt"
)

func IsNumeric(str string) bool {
	if len(str) == 0 {
		return false
	}
	result := true
	pos := 0
	for i, v := range str {
		pos = i
		if i == 0 && (v == '+' || v == '-') {
			result = true
		} else if v >= '0' && v <= '9' {
			result = true
		} else {
			pos--
			break
		}
	}
	if str[pos] == '.' {
		for i := pos + 1; i < len(str); i++ {
			pos = i
			if str[i] >= '0' && str[i] <= '9' {
			} else {
				str = str[i:]
				break
			}
		}
	}
	if str[0] == 'E' || str[0] == 'e' {
		for i := pos + 1; i < len(str); i++ {
			pos = i
			if (i == pos+1) && (str[i] == '+' || str[i] == '-') {
			} else if str[i] >= '0' && str[i] <= '9' {
			} else {
				result = false
			}
		}
	} else {
		result = false
	}
	return result
}

func main() {
	// str := "123.45e+6"
	// str := "100"
	str := "1.2.3"
	result := IsNumeric(str)
	fmt.Print(result)
}

注意事项

  1. to add

说明

  1. 当前使用 go1.15.8
  2. 参考 牛客网--剑指offer
    标题中jzn(n为具体数字)代表牛客网剑指offer系列第n号题目,例如 jz01 代表牛客网剑指offer中01号题目。

注意!!!

  • 笔者最近在学习 golang,因此趁机通过数据结构和算法来进一步熟悉下go语言
  • 当前算法主要来源于剑指 offer,后续会进一步补充 LeetCode 上重要算法,以及一些经典算法
  • 此处答案仅为参考,不一定是最优解,欢迎感兴趣的读者在评论区提供更优解
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串09--表示数值的字符串 的相关文章

  • 一文弄懂循环链表、双向链表、静态链表

    循环链表 双向链表 静态链表 三遍定律 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 1 循环链表 将单链表中终端结点的指针端由空指针改
  • 面试题61. 扑克牌中的顺子(java+python)

    从若干副扑克牌中随机抽 5 张牌 判断是不是一个顺子 即这5张牌是不是连续的 2 10为数字本身 A为1 J为11 Q为12 K为13 而大 小王为 0 可以看成任意数字 A 不能视为 14 示例 1 输入 1 2 3 4 5 输出 Tru
  • Hash table and application in java

    查找的效率取决于在查找是比较的次数 次数越少效率越高 反之越低 最理想的情况是无需比较 一次存取便能找到所查找的记录 根据对应关系f找到给定值K的像f K hash function 应运而生 由此思想建的表称为hash table 集合h
  • PCL—低层次视觉—点云分割(RanSaC)

    点云分割 点云分割可谓点云处理的精髓 也是三维图像相对二维图像最大优势的体现 不过多插一句 自Niloy J Mitra教授的Global contrast based salient region detection出现 最优分割到底鹿死
  • findBug 错误修改指南

    FindBugs错误修改指南 1 EC UNRELATED TYPES Bug Call to equals comparing different types Pattern id EC UNRELATED TYPES type EC c
  • 链表和线性表的优缺点

    链表和线性表的优缺点 作为我们最先接触的两个数据结构 链表和线性表的优缺点都较为明显 并且二者互相补足 文章目录 链表和线性表的优缺点 线性表 线性表的组成 线性表的缺点 线性表的优点 链表 链表的组成 链表的优点 链表的缺点 总结 线性表
  • 逆波兰表达式求值(C语言实现)

    实验项目 从文本文件输入任意一个语法正确的 中缀 表达式 显示并保存该表达式 利用栈结构 把上述 中缀 表达式转换成后缀表达式 并显示栈的状态变化过程和所得到的后缀表达式 利用栈结构 对上述后缀表达式进行求值 并显示栈的状态变化过程和最终结
  • SDUT--OJ《数据结构与算法》实践能力专题训练6 图论

    A 数据结构实验之图论一 基于邻接矩阵的广度优先搜索遍历 Description 给定一个无向连通图 顶点编号从0到n 1 用广度优先搜索 BFS 遍历 输出从某个顶点出发的遍历序列 同一个结点的同层邻接点 节点编号小的优先遍历 Input
  • Hash映射理解

    先说数组 数组优点之一 能通过索引很快定位到值 hashmap 就是利用了数组这个优点 对比 线性映射 定义一个数组 数组的元素是结构体 结构体包括 一对键 值 伪代码表示 a 0 struct Bill 5 a 1 struct KK 6
  • 亚利桑那州立大学周纵苇:研习 U-Net ——现有的分割网络创新

    雷锋网AI研习社按 经典的 Encoder Decoder 结构在目标分割问题中展现出了举足轻重的作用 然而这样一个相对固定的框架使得模型在感受野大小和边界分割精度两方面很难达到兼顾 本次公开课 讲者以 U Net 为案例分析 总结现有的分
  • 字符串09--表示数值的字符串

    字符串09 表示数值的字符串 jz53 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值
  • JavaScript系列——数组元素左右移动N位算法实现

    引言 在自己刚刚毕业不久的时候 去了一家公司面试 面试官现场考了我这道题 我记忆深刻 当时没有想到思路 毫无疑问被面试官当成菜鸟了 最近刚好在研究数组的各种算法实现 就想到这道题 可以拿来实现一下 纪念自己逝去的青春 需求 假设有这样一个数
  • 堆栈01--用两个栈实现队列

    堆栈01 用两个栈实现队列 jz05 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 测试用例 队列先进先出 输入 1 2 输出 1 2 解析
  • 浮生六记

    浮生六记 目录 浮生六记卷一 闺房记乐 002 浮生六记卷二 闲情记趣 015 浮生六记卷三 坎坷记愁 022 浮生六记卷四 浪游记快 034 浮生六记 2 浮生六记卷一 闺房记乐 余生乾隆癸未冬十一月二十有二日 正值太平盛世 且在 衣冠之
  • 算法问题实战策略

    算法问题实战策略 基本信息作者 韩 具宗万 译者 崔盛一出版社 人民邮电出版社ISBN 9787115384621上架时间 2015 2 4出版日期 2015 年3月开本 16开页码 738版次 1 1 内容简介 算法问题实战策略 本书收录
  • 机器学习算法GBDT的面试要点总结-上篇

    1 简介 gbdt全称梯度提升决策树 在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一 在前几年深度学习还没有大行其道之前 gbdt在各种竞赛是大放异彩 原因大概有几个 一是效果确实挺不错 二是即可以用于分类也可以用于回归 三是可
  • 索引优化之Explain 及慢查询日志

    索引 本质是数据结构 简单理解为 排好序的快速查找数据结构 以索引文件的形式存储在磁盘中 目的 提高数据查询的效率 优化查询性能 就像书的目录一样 优势 提高检索效率 降低IO成本 排好序的表 降低CPU的消耗劣势 索引实际也是一张表 该表
  • 基数排序代码实现

    详情请看排序总结 传送门 https blog csdn net m0 52711790 article details 121914543 基数排序的知识点我就不贴出来 相信都能搜到对应概念解释 下面就直接上代码 代码解释其实也很清晰了
  • 用两个栈实现队列

    目录 一 栈的基本结构及其接口 二 我的队列结构定义 三 我的队列创建及其初始化 四 我的队列入队 五 我的队列出队 六 我的队列取队头元素 七 我的队列判空 八 我的队列销毁 一 栈的基本结构及其接口 栈的结构定义 typedef int
  • 【数据结构入门精讲 | 第二篇】一文讲清算法复杂度

    上篇文章中我们引入了算法 数据结构 数据类型等概念 而要想衡量一个算法与数据结构是否为优质的 就需要一个衡量标准 这个衡量标准也是在我们实现一个好的算法时要遵循的原则 目录 基本概念 渐进性态 渐进性态数学表征 算法复杂度的运算 顺序搜索算

随机推荐

  • 劳务派遣员工转正制度是什么

    一 劳务派遣员工转正制度是什么 要根据不同的单位来看 因为具体的制度还是要看用工单位的相关规定 比如大部分银行每年都会有一定的转正名额 公务员和事业单位的转正机会则较少 想要成为正式员工还是要参加招聘考试 银行招聘的时候会以劳务派遣的方式招
  • DDK&WDM学习 - HelloWDM,WDM驱动加载,INF文件

    转自 http www itstudy net html 200911 30 20091130234443 htm 第十五章 驱动程序的安装 方便的 自动的和容易的安装一个设备驱动程序对于用户来说是一个重要的步骤 对于提供给用户容易的设备管
  • 解决存储vuex数据,页面刷新后vuex数据被清空了的问题

    1 vuex刷新后数据会被清除 2 可以监听用户是否手动刷新页面 刷新之前先把vuex的数据存储在localStorage里面 页面加载时读取localStorage里的状态信息给vuex赋值 赋值后再清空localStorage 打开ap
  • 一篇文章看懂自动引用计数和循环引用到底是怎么回事

    ARC Swift中的ARC Automatic Reference Counting 自动引用计数 是一种内存管理机制 用于跟踪和管理应用程序中的对象引用计数 确保内存中的对象只在需要的时候存在 当对象的引用计数为0时就会被系统析构掉 A
  • 【双流(1)|原理】flink 双流join原理(1)Interval Join:state过大? 回撤现象出现时,sink如何处理,还有如何优化回撤?数据出现shuffle时join是如何处理的?

    先思考几个问题 双流join的基本原理是什么 双流join的分类有哪些 具体的实现是什么 双流join产生的问题 回撤的情况以及优化的可能性 多流join数据倾斜与性能优化思路 多流join的可能性 文章目录 一 流的join和表的join
  • 校验是否是金额或者小数或者数字,是否是数字

    校验是否是金额或者小数或者数字 是否是数字 param val return bool static function isValidMoney val pattern d d 1 5 if preg match pattern val r
  • c++工程模式+配置文件+动态调用类

    前言 主函数 SimpleFactoryRefactor cpp include
  • JVM和Android虚拟机知识点总结

    文章目录 1 JVM Dalvik Art虚拟机的区别 1 1 JVM和Dalvik的区别 1 2 Dalvik和Art的区别 2 Class文件和dex文件的区别 3 基于寄存器的Android虚拟机和基于栈的JVM 3 1 栈和栈帧 3
  • 算法基础/递归回溯

    1 17 电话号码的字母组合 题目描述 示例 示例 1 输入 digits 23 输出 ad ae af bd be bf cd ce cf 示例 2 输入 digits 输出 示例 3 输入 digits 2 输出 a b c 解答描述
  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • 粤嵌GEC6818开发板-入门感慨篇(续一)

    触摸屏的事件 include
  • Sql几种删除的区别

    Drop drop可用于删除数据库 drop database 数据库名称 删除数据表 use 数据库名称 drop table 数据表1名称 数据表2名 或删除数据表字段 use 数据库名称 alter table 数据表名称 drop
  • mqttxieyi

    Mqtt概述 Mqtt开发最初是用于卫星通讯监控输油管道的项目 一种用于嵌入式设备的通讯协议 这种通讯协议必须满足以下条件 易于实现 数据传输的服务质量可控 占用带宽小 传输数据内容不可预知 设备连接状态可知 MQTT 从诞生之初就是专为低
  • 使用PyCharm进行Python远程调试

    背景描述 在机房中 服务器通过ADB与多台Android设备相连接 并通过Python应用程序 QMSInterceptor 对Android设备进行任务调度 在开发环境中对QMSInterceptor调试完毕后 上传至服务器 发现程序运行
  • Linux基础介绍

    Linux的创始人Linus Torvalds Linux的官方标准发音为 lin ks Linux和Unix是非常像的 Linux就是根据Unix演变过来的 Linux是免费的 其实只是说Linux的内核免费 在Linux内核的基础上产生
  • JAVA协同过滤推荐算法

    1 什么是协同过滤 在推荐系统众多方法中 基于用户的协同过滤推荐算法是最早诞生的 原理也较为简单 该算法1992年提出并用于邮件过滤系统 两年后1994年被 GroupLens 用于新闻过滤 一直到2000年 该算法都是推荐系统领域最著名的
  • WPF TextBox 加默认提示文字

  • C语言pcre库的使用及验证IP地址的合法性

    PCRE是一个用C语言编写的正则表达式函数库 它十分易用 同时功能也很强大 性能超过了POSIX正则表达式库和一些经典的正则表达式库 在使用PCRE库时 首先肯定是需要安装pcre的 不过一般的系统都会有自带的PCRE库 不过如果想使用最新
  • Task1:李宏毅深度学习P1-P2

    这次借在Datawhale组队学习的机会补全一下机器学习上一些知识的漏洞 主要是标注一下自己需要注意的地方在这与大家分享 今日分享的是李宏毅深度学习Part1 2中自己之前不太重视的地方 1 在对机器学习的各类概念介绍时 还是能看出与国内授
  • 字符串09--表示数值的字符串

    字符串09 表示数值的字符串 jz53 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值