当前位置: 首页 > news >正文

算法进修Day-33

算法进修Day-33

65. 有效数字

难度:困难
题目要求
有效数字(按顺序)可以分成以下几个部分:

  1. 一个 小数 或者 整数
  2. (可选)一个 'e''E' ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+''-'
  2. 下述格式之一:
    1. 至少一位数字,后面跟着一个点 '.'
    2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
    3. 一个点 '.' ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+''-'
  2. 至少一位数字

部分有效数字列举如下:["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

部分无效数字列举如下:["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true

示例1

输入:s = “0”
输出:true

示例2

输入:s = “e”
输出:false

示例3

输入:s = “.”
输出:false

题解

可以直接使用正则表达式进行匹配,^\s*-?\d+(\.\d+)?([eE][-+]?\d+)?\s*$为当前正确得正则表达式,解读如下:

  • ^\s*表示以零个、一个或多个空格开头
  • -?表示一个可选的负号
  • \d+表示一个或多个的数字
  • (\.\d+)?表示一个可选的小数部分,包括一个小数点和至少一个数字
  • ([eE][-+]?\d+)?表示科学计数法,包括"e""E",可选的正负号和至少一个数字
  • \s*表示以零个、一个或多个空字符
  • $表示结尾

想法代码

using System.Text.RegularExpressions;class Solution
{private static Regex compare = new Regex(@"^\s*-?\d+(\.\d+)?([eE][-+]?\d+)?\s*$");public static void Main(String[] args){string s = "e";Solution solution = new Solution();Console.WriteLine(solution.IsNumber(s));}public bool IsNumber(string s){return compare.IsMatch(s);}
}

66. 加一

难度:简单
题目要求
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例1

输入:digits = [1,2,3]
输出:[1,2,4]

示例2

输入:digits = [4,3,2,1]
输出:[4,3,2,2]

示例3

输入:digits = [0]
输出:[1]

题解

定义 i n d e x = d i g i t s . L e n g t h − 1 index=digits.Length-1 index=digits.Length1,如果数组中 i n d e x index index 位置为9,那么将 i n d e x index index 前移
如果 i n d e x = = 0 & & d i g i t s [ i n d e x ] = = 9 index==0 \&\& digits[index]==9 index==0&&digits[index]==9,那么对数组扩容, i n d e x index index 位置的内容变为1且对之后的所有元素变为0,如果 i n d e x = = 0 & & d i g i t s [ i n d e x ] ≠ 9 index==0\&\&digits[index]\neq9 index==0&&digits[index]=9 那么将 i n d e x + 1 index+1 index+1并对之后的元素变为0
如果不满足上方条件,则将最后一个元素加一

想法代码

class Solution
{public static void Main(String[] args){int[] digits = { 8,9 };Solution solution = new Solution();int[] res = solution.PlusOne(digits);for (int i = 0; i < res.Length; i++){Console.Write(res[i] + " ");}}public int[] PlusOne(int[] digits){int index = digits.Length - 1;if (digits[digits.Length - 1] == 9){if (digits.Length > 1){while (true){if (index == 0){break;}if (digits[index] == 9){index--;}else{break;}}}if (index == 0 && digits[index] == 9){Array.Resize(ref digits, digits.Length + 1);digits[index] = 1;}else{digits[index] += 1;}for (int i = digits.Length - 1; i > index; i--){digits[i] = 0;}}else{digits[digits.Length - 1] += 1;}return digits;}
}
http://www.lryc.cn/news/199528.html

相关文章:

  • 开发工具分享 - Mybatis SQL日志格式化H5
  • 好用的办公软件有哪些
  • C#中Abstract、Virtual和Override的使用方法
  • mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等
  • Oracle 19c OCM讲义课程:应用SQL执行计划基线的案例
  • 什么是 EDI 857?
  • OJ项目【登录】——验证码、失败登录多次账户冻结、用户密码加密,我是如何实现的?
  • js鼠标点击添加图标并获取图标的坐标值
  • How to add a jar to a project in eclipse?
  • 动手实现H5仿原生app前进后退切换效果
  • 【标准化封装 SOT系列 】 D SOT-323 SOT-363
  • 软件测试肖sir__python之ui自动化实战和讲解03
  • Kafka序列化反序列化解析、kafka schema
  • 谷歌浏览器中如何审查隐藏的元素
  • 【vue】使用less报错:显示this.getOptions is not a function
  • 代码随想录第48天 | ● 739. 每日温度 ● 496.下一个更大元素 I
  • 团购页面.
  • linux-系统日志/var/log/简介
  • 2022最新版-李宏毅机器学习深度学习课程-P26RNN-2
  • docker 配置mongoDB
  • 基于PHP的宠物爱好者交流平台管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 盘点数据采集中14种常见的反爬策略
  • 直播预告:防御升级-SMC2精准对抗账号劫持和漏洞威胁
  • 班主任好物 班级查询系统来啦
  • 【性能测试】使用JMeter对code论坛进行压力测试
  • Windows 事件日志监控
  • pytorch里常用操作(持续更新)
  • 地铁大数据客流分析系统 设计与实现 计算机竞赛
  • 00后都到适婚年龄啦!90后的还在低调什么?
  • reactnative使用七牛云上传图片