字符串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--表示数值的字符串 的相关文章

  • LeetCode83: 删除排序链表中的重复元素

    给定一个已排序的链表的头 head 删除所有重复的元素 使每个元素只出现一次 返回 已排序的链表 示例 1 输入 head 1 1 2 输出 1 2 示例 2 输入 head 1 1 2 3 3 输出 1 2 3 提示 链表中节点数目在范围
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • 4399 C++笔试题

    1 写出一个函数 取到链表中倒数第二个节点 双链表 node getSec List mylist return mylist m tail gt m prev m prev为链表前指针 单链表 node getSec List mylis
  • 用 Java 实现的八种常用排序算法

    八种排序算法可以按照如图分类 前置知识 1 算法稳定性 在一个序列中 能保证两个相等的数 经过排序之后 其在序列的前后位置顺序不变 A1 A2 排序前 A1 在 A2 前面 排序后 A1 还在 A2 前面 2 时间复杂度 时间复杂度是用于衡
  • DDP入门

    DDP 即动态动态规划 可以用于解决一类带修改的DP问题 我们从一个比较简单的东西入手 最大子段和 带修改的最大子段和其实是常规问题了 经典的解决方法是用线段树维护从左 右开始的最大子段和和区间最大子段和 然后进行合并 现在我们换一种方法来
  • 亚利桑那州立大学周纵苇:研习 U-Net ——现有的分割网络创新

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

    对链表排序有两种方法 1 比较了两个节点的大小后 对指针进行改变 从而交换节点的顺序 2 比较了两个节点的大小后 只交换数据域 而不改变指针 从而交换节点的顺序 第二种办法比较简单 本文主要对第二种方法进行讲解 链表节点排序算法 采用 冒泡
  • 数据结构小白之插入排序算法

    1 插入排序 1 1 思路 将n个需要排序的元素看成两个部分 一个是有序部分 一个是无序部分 开始的时候有序表只有一个元素 无序表有n 1个元素 排序过程中每次从无序表中取出元素 然后插入到有序表的适当位置 从而成为新的有序表 类似排队 如
  • Python 实现列队

    1 列队定义 队列是项的有序结合 其中添加新项的一端称为队尾 移除项的一端称为队首 当一个元素从队尾进入队列时 一直向队首移动 直到它成为下一个需要移除的元素为止 最近添加的元素必须在队尾等待 集合中存活时间最长的元素在队首 这种排序成为
  • 剑指Offer 22. 链表中倒数第k个节点(Easy)/ 19. 删除链表的倒数第 N 个结点(Medium)/ ListNode调用!!!

    LeetCode 19 删除链表的倒数第 N 个结点 Medium 题目链接 题解 链表中倒数第 k 个节点 双指针 清晰图解 思路 代码 Definition for singly linked list class ListNode d
  • 算法系列15天速成——第八天 线性表【下】

    一 线性表的简单回顾 上一篇跟大家聊过 线性表 顺序存储 通过实验 大家也知道 如果我每次向 顺序表的头部插入元素 都会引起痉挛 效率比较低下 第二点我们用顺序存储时 容 易受到长度的限制 反之就会造成空间资源的浪费 二 链表 对于顺序表存
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 数理统计知识整理——回归分析与方差分析

    题记 时值我的北科研究生第一年下 选学 统计优化 课程 备考促学 成此笔记 以谨记 1 线性回归 1 1 原理分析 要研究最大积雪深度x与灌溉面积y之间的关系 测试得到近10年的数据如下表 使用线性回归的方法可以估计x与y之间的线性关系 线
  • 时间复杂度+常见复杂度解释

    前言 算法的效率 虽然计算机能快速的完成运算处理 但实际上 它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源 要想编写出能高效运行的程序 我们就需要考虑到算法的效率 算法的效率主要由以下两个复杂度来评估 时间复杂度 评估执行程序所
  • Leetcode1094. 拼车

    Every day a Leetcode 题目来源 1094 拼车 解法1 差分数组 对于本题 设 a i 表示车行驶到位置 i 时车上的人数 我们需要判断是否所有 a i 都不超过 capacity trips i 相当于把 a 中下标从
  • 牛客剑指offer刷题其他算法篇

    文章目录 构建乘积数组 题目 思路 代码实现 第一个只出现一次的字符
  • 【数据结构入门精讲 | 第二篇】一文讲清算法复杂度

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

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • 按照层次遍历结果打印完全二叉树

    按照层次遍历结果打印完全二叉树 按照推论结果 l 层首个节点位置 2 h l 1 l 层节点间距 2 h l 1 1 编码实现 public static
  • 从源码角度来谈谈 HashMap

    HashMap的知识点可以说在面试中经常被问到 是Java中比较常见的一种数据结构 所以这一篇就通过源码来深入理解下HashMap 1 HashMap的底层是如何实现的 基于JDK8 1 1 HashMap的类结构和成员 HashMap继承

随机推荐

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

    一 劳务派遣员工转正制度是什么 要根据不同的单位来看 因为具体的制度还是要看用工单位的相关规定 比如大部分银行每年都会有一定的转正名额 公务员和事业单位的转正机会则较少 想要成为正式员工还是要参加招聘考试 银行招聘的时候会以劳务派遣的方式招
  • 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 都表示数值