【Offer】[67] 【把字符串转换成整数】
题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路分析
要注意特殊情况:null、空字符串、带有正负号、字符不是数字、溢出等等。
对于非法的特殊输入,返回值为0,还要用一个全局变量进行标记。
测试用例
- 功能测试:正、负、零、带有正负号的数字。
- 边界值测试:最大正整数,最小负整数。
- 特殊测试:null,数空字符串,仅有正负号,非法字符
Java代码
public class Offer067 {
public static void main(String[] args) {
test1();
test2();
test3();
}
public static int StrToInt(String str) {
return Solution1(str);
}
static boolean isValid = false;
private static int Solution1(String str) {
if(str == null || str.length()<=0)
return 0;
char[] chars = str.toCharArray();
long num=0; //先用long来存储,以防止越界
boolean minus=false;
for(int i=0; i<chars.length; i++){
if(i==0 && chars[i]=='-'){
minus=true;
}else if(i==0 && chars[i]=='+'){
minus=false;
}else{
int a=(int) (chars[i]-'0');
if(a<0 || a>9){
isValid=false;
return 0;
}
num= (minus==false) ? num*10+a : num*10-a;
isValid=true; //不放在最后面是为了防止str=‘+’的情况被判断为true
if((!minus && num>0x7FFFFFFF)
||(minus && num<0x80000000)){
isValid=false;
return 0;
}
}
}
return (int)num;
}
private static void test1() {
}
private static void test2() {
}
private static void test3() {
}
}
代码链接
【Offer】[67] 【把字符串转换成整数】的更多相关文章
- 剑指 Offer 67. 把字符串转换成整数 + 字符串
剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
- 力扣 - 剑指 Offer 67. 把字符串转换成整数
题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...
- 【Java】 剑指offer(67) 把字符串转换成整数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...
- 《剑指offer》面试题67. 把字符串转换成整数
问题描述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. ...
- [LeetCode]面试题67. 把字符串转换成整数
题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- Go语言实现:【剑指offer】把字符串转换成整数
该题目来源于牛客网<剑指offer>专题. 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入描述: 输入一个字符串,包括数字字母符号,可以为空. 输出描述: 如果是合 ...
- 剑指Offer 49. 把字符串转换成整数 (字符串)
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...
- [剑指Offer] 49.把字符串转换成整数
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 [思路]考虑所有特殊情况 1.数字前面有空格,如s=" 12 ...
- 《剑指offer》第六十七题(把字符串转换成整数)
// 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不 // 能使用atoi或者其他类似的库函数. #include <ios ...
- 剑指Offer - 九度1508 - 把字符串转换成整数
剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例 ...
随机推荐
- 【POJ - 2229】Sumsets(完全背包)
Sumsets 直接翻译了 Descriptions Farmer John 让奶牛们找一些数加起来等于一个给出的数N.但是奶牛们只会用2的整数幂.下面是凑出7的方式 1) 1+1+1+1+1+1+1 ...
- JS DOM(文档对象模型)与BOM(浏览器对象模型)
在JS中,对DOM(Document Object Model)对象和BOM(Browser Object Model )对象的操作是非常重要的内容.DOM主要包括HTML文档的属性和方法,像对HTM ...
- sql存储过程中循环批量插入
前几天有一个需求很头痛,部门是有上下级关系的,在给部门的经理赋予角色和权限的时候,通常我们都会认为假如经理A的部门是1,那么我给了他部门1 的管理权限,那么1的下级部门101,102,103 &quo ...
- java封装 redis 操作 对象,list集合 ,json串
/** * 功能说明: * 功能作者: * 创建日期: * 版权归属:每特教育|蚂蚁课堂所有 www.itmayiedu.com */package com.redis.service; import ...
- 自定义genericUDF demo
package cn.com.dtmobile.hiveUdf; import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import ...
- .Net Mvc判断用户是否登陆、未登陆跳回登陆页、三种完美解决方案
开篇先不讲解,如何判断用户是否登陆,我们先来看用户登录的部分代码,账户密码都正确后,先将当前登录的用户名记录下来. public ActionResult ProcessLogin() { try { ...
- 《Java 8 in Action》Chapter 4:引入流
1. 流简介 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行 ...
- 2015-11-13 linux基础笔记
1.安装linux 使用光盘,版本CENSOS6.6 2.命令过长请使用\ 后enter键换行转义 直到不需要转义后回车运行 3.linux 大小写敏感 4.显示terminal 输出语言 ec ...
- F#周报2019年第34期
新闻 高效的F#,提示与技巧 Fable 社区资源 Visual Studio提示与技巧:为.NET增加生产力 无风险地尝试Compositional IT的培训包--如果没有增加任何价值,可以得到完 ...
- Liunx学习总结(四)--文件的权限管理
文件和目录的权限 每个文件都有其所有者(u:user).所属组(g:group)和其他人(o:other)对它的操作权限,a:all则同时代表这3者.权限包括读(r:read).写(w:write). ...