【Java版oj】day06把字符串转换成整数

news2024/11/29 5:46:11

目录

一、原题再现

二、问题分析

三、完整代码


一、原题再现

把字符串转换成整数_牛客题霸_牛客网

描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0

数据范围:字符串长度满足0≤n≤100 
进阶:空间复杂度空间复杂度 O(1) ,时间复杂度 O(n)

注意:

①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0

②字符串中可能出现 +/- 且仅可能出现在字符串首位。

输入描述:

输入一个字符串,包括数字字母符号,可以为空

返回值描述:

如果是合法的数值表达则返回该数字,否则返回0

示例1

输入:

"+2147483647"

返回值:

2147483647

示例2

输入:

"1a33"

返回值:

0

二、问题分析

        本题解决方法很简单,要注意几个注意点。本题的关键是要处理几个关键边界条件:空字符串、 正负号处理、数字串中存在非法字符。

        首先判断字符串为空或者为null的时候,返回值为0;其次判断字符串首字符是为"+"或者"-";接着从第二个字符判断是否为''0''~''9'',如果不在范围内就直接范围0,符合要求的数字字符就转换成数字;最后要注意判断数字串是否是合法的数值即是否在整数范围内。(Integer.MIN_VALUE、Integer.MAX_VALUE)

三、完整代码

public class Solution {
    public int StrToInt(String str) {
        if (str == null || str.equals("")) {
            return 0;
        }
        char[] strArray = str.trim().toCharArray();
        int sum = 0, flag = 1, tmp = 0;
        int first = 0;
        if (strArray[0] == '-') {
            flag = -1;
            first = 1;
        }
        if (strArray[0] == '+') {
            first = 1;
        }
        for (int i = first; i < strArray.length; i++) {
            if (strArray[i] > '9' || strArray[i] < '0') {
                return 0;
            }
            int dight = (int)(strArray[i] - '0');
            sum = sum * 10 + dight;
            if (flag == 1 && sum * 10 > Integer.MAX_VALUE - dight)
                return 0;
            if (flag == -1 && sum * 10 * flag < Integer.MIN_VALUE + dight)
                return 0;
        }
        return flag * sum;
    }
}

 

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

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

相关文章

qt的移植

1、下载qt-everywhere-opensource-src-4.8.1.tar.gz, 下载连接地址如下:http://download.qt.io/archive/qt/4.8/4.8.1/ 2. 解压qt压缩文件tar xvf qt-everywhere-opensource-src-4.8.1.tar.gz 3. 为了编译的方便编译 &#xff0c;写了一个配置文件bulid.sh 内容如下&#xff1a…

5G无线技术基础自学系列 | 下行链路预算

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 图10-2所示为下行链路预算的原理&#…

【lssvm回归预测】基于鲸鱼算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Open AI——如何正确注册和使用Open AI进行GEE计算

Open AI 是很火的一个AI交互式服务&#xff0c;但苦于很多人不知道如何去注册使用&#xff0c;因为在中国大陆是无法使用正常的手机号进行注册的&#xff0c;因为官网会提示你当前区域不支持。值得注意的这里需要我们进行科学上网&#xff0c;中国的网址是无法进行登录的&#…

常见经典vue面试题(面试必问)

MVVM的优缺点? 优点: 分离视图&#xff08;View&#xff09;和模型&#xff08;Model&#xff09;&#xff0c;降低代码耦合&#xff0c;提⾼视图或者逻辑的重⽤性: ⽐如视图&#xff08;View&#xff09;可以独⽴于Model变化和修改&#xff0c;⼀个ViewModel可以绑定不同的…

[附源码]Python计算机毕业设计SSM基于JAVA语言的国风画展网站(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

接触网绝缘子缺陷检测项目

目录 1. 接触网绝缘子作用 2. 接触网绝缘子破损原因及危害 3.接触网绝缘子缺陷检测图像数据集介绍 4. 缺陷检测模型介绍 4.1 efficientnet模型介绍 4.2 YOLOv3模型介绍 4.3 efficientnet-YOLOv3模型介绍 5. 模型训练与测试 5.1 模型训练 5.2 检测性能测试 参考 1. 接触网…

基于鲸鱼算法优化的lssvm回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

基于Wechaty+Docker打造一个ChatGPT机器人

所需资源 云服务器&#xff08;国外&#xff09;我的配置&#xff1a;腾讯香港轻量云 2H 2G 30MDockerGithub地址&#xff1a;https://github.com/fuergaosi233/wechat-chatgpt文章来自&#xff1a;与时团队-小染&#xff0c;以及我的部分修改 你也可以选择不适用Docker搭建&am…

windows WSL 安装并配置镜像与SSH

文章目录1 WSL介绍2 安装步骤2.1 启用适用于 Linux 的 Windows 子系统2.2 检查运行 WSL 2 的要求2.3 启用虚拟机功能2.4 下载 Linux 内核更新包2.5 将 WSL 2 设置为默认版本2.6 安装所选的Linux 分发解决无法打开微软商店2.6.1 配置网络2.6.2 使用官方教程的链接2.6.3 使用命令…

【C语言进阶】使用gettimeofday为你的程序运行时间做统计

作者简介 架构师李肯&#xff08;全网同名&#xff09;&#xff0c;一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验&#xff0c;深耕IoT领域多年&#xff0c;熟知IoT领域的业务发展&#xff0c;深度掌握IoT领域的相关技术栈&#xff0c;包括但不限于主流RTO…

pcl点云处理

pcl点云处理 1.安装 系统&#xff1a; ubuntu20.04 方法1. 直接命令行方式安装 sudo apt-get install libpcl-devubuntu20.04下默认的pcl版本是1.10. 头文件路径在/usr/include/pcl-1.10/ 方法2.源码编译安装 推荐源码安装&#xff0c;我们安装1.12.1版本&#xff0c;直…

pve制作资源池

pve制作资源池pve制作资源池步骤1.创建资源池2.添加资源池存储成员3.创建用户身份组进行管理4.查看用户角色权限划分单个权限5.创建新角色控制权限6.创建群组权限7.创建测试用户8.模板制作将模板进行迁移&#xff0c;错误&#xff1a;pve无法迁移&#xff1a; cant migrate VM …

kafaka ElasticSearch 集群,解决问题,工作流程及配置

一、作用 性能优化&#xff1a;jvm多线程和I/O&#xff0c;kafkaes 组合的架构&#xff0c;是为了降低es io瓶颈 二、工作流程 如下两图示意&#xff0c; agent&#xff08;指的是filebeat、metricbeat、auditbeat、API服务、logstash&#xff09;收集需要提取的日志文件&…

【linux】之大数据基础平台实施及运维下

一、完全分布式部署介绍 学习目标 能够了解完全分布式部署场景 完全分部式是真正利用多台Linux主机来进行部署Hadoop&#xff0c;对Linux机器集群进行规划&#xff0c;使得Hadoop各个模块分别部署在不同的多台机器上。 二、NameNode HA完全分布式部署 学习目标 能够了解HA完…

计算机网络习题集

文章目录题目答案&#xff1a;题目一&#xff1a;答案一&#xff1a;题目二答案二&#xff1a;题目三&#xff1a;题四&#xff1a;答案四&#xff1a;题目答案&#xff1a; 一、 单项选择题 计算机网络最突出的优点是( D ) A. 精度高 B. 内存容量大 C. 运算速度快 D. 共享资…

【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析

前提介绍 SpringCloud-Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件&#xff0c;方便开发者通过 Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba&#xff0c;您只需要添加一些注解和少量配…

计算机网络(自顶向下)学习笔记——网络层

第四章—网络层 4.1、概述 转发功能和路由选择功能的区别&#xff1f; 转发涉及在单个的路由中从一条入链路到一条出链路的传送路由选择涉及一个网络的所有路由器&#xff0c;他们经路由选择协议共同交互&#xff0c;决定分组从源到目地结点所采用的的路径 4.1.1、转发和路…

Metal每日分享,调整透明度滤镜效果

本案例的目的是理解如何用Metal实现调整透明度效果滤镜&#xff0c;核心就是改变图像像素的透明度值&#xff1b; Demo HarbethDemo地址 实操代码 // 透明度滤镜 let filter C7Opacity.init(opacity: 0.75)// 方案1: ImageView.image try? BoxxIO(element: originImage, …

java MybatisPlus入门 字段映射 分页查询 逻辑删除 乐观锁

MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率 入门案例 继承BaseMapper<自己的domain类> 就可以了&#xff0c;自动装配后直接会有各种方法 标准数据层开发 MP分页查询功能 条件查询 NULL值控制…