leetcode-java.T008_StringToInteger 字符串转成整形
来源:互联网 发布:足球数据分析软件 编辑:程序博客网 时间:2024/05/29 13:20
每天坚持刷leetcode----字符串转整形
package leetcode.T008_StringToInteger;/** * @Title: Solution.java * @Package leetcode.T008_StringToInteger * @Description: TODO * @author zhouzhixiang * @date 2017-6-3 上午12:24:25 * @version V1.0 */public class Solution {/** * <pre> * 原题 * Implement atoi to convert a string to an integer. * Hint: Carefully consider all possible input cases. If you want a challenge, * please do not see below and ask yourself what are the possible input cases. * Notes: It is intended for this problem to be specified vaguely (ie, no given * input specs). You are responsible to gather all the input requirements up front. * * 题目大意 * 实现一个atoi函数,将字符串转成整形 * 要点:考虑所有的输入情况。 * * 解题思路 * 前导字符是+或-或者没有,接下来输入的是数字,数字不能整数能表示的最大或最小数。 * 如果超过就返回对应的最小或者最小的值。 * </pre> * * @param str * @return */public static void main(String[] args) { System.out.println(new Solution().atoi("3444ffff455544"));}public int atoi(String str){// 如果字符串为空null,长度为0if(str == null || str.length()==0 ){return 0;}int start = 0;// 对第一个字符进行判断// 如果为空' 'if(str.charAt(start) == ' '){while(str.charAt(start)==' '){start++;if(start >= str.length()){// 输入的全部都是空格return 0;}}}boolean positive = true;// true为正数,false为负数// 如果为+if(str.charAt(start)=='+'){positive = true;start++;}else if(str.charAt(start)=='-'){// 如果为-positive = false;start++;}else if(str.charAt(start)>='0' && str.charAt(start)<='9'){// 如果是0-9,进入下一步判断,将字符串转成整形return cal(str,start,positive);}else{return 0;}// 第一个非空白字符是+或-,但也是最后一个字符if(start>=str.length()){return 0;}// 如果+或-后面接的不是数字if(str.charAt(start)>'9' || str.charAt(start)<'0'){return 0;}else{return cal(str,start,positive);}}/** * * @Title: cal * @Description: 将字符串数字转成整形* @param @param str* @param @param start* @param @param positive* @param @return * @return int * @throws */private int cal(String str, int start, boolean positive) {long result = 0;while(start<str.length() && str.charAt(start)>='0' && str.charAt(start)<='9'){result = result*10 + (str.charAt(start)-'0');// 如果是正数if(positive){if(result>Integer.MAX_VALUE){return Integer.MAX_VALUE;}}else{if(-result<Integer.MIN_VALUE){return Integer.MIN_VALUE;}}start++;}if(positive){return (int) result;}else{return (int) -result;}}}
阅读全文
0 0
- leetcode-java.T008_StringToInteger 字符串转成整形
- 【LeetCode】- String to Integer (字符串转成整形)
- 将字符串转成整形的方法.
- 字符串转整形--java
- java 对象转成字符串
- Java字符串转成数组
- java字符串转成二维码
- java十六进制字符串 转化为整形
- java 实现 不限长整形字符串 相加
- java判断字符串是否是整形数字
- JAVA整形与字符串的转换
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- java 之split 字符串转成字符串数组
- leetcode-java.T013_RomarToInteger 罗马数字转成整数数字
- JAVA字符串转成utf-8编码方式
- gson将JSON字符串转成Java对象
- Java中Json对象转成xml字符串
- java 16进制转成字符串
- leetcode-java.T011_ContainerWithMostWater 找两条竖线然后这两条线以及X轴构成的容器能容纳最多的水
- Android快速实现热更新
- 数学符号
- leetcode-java.T009_PalindromeNumber 回文数字
- Python 父子类继承笔记
- leetcode-java.T008_StringToInteger 字符串转成整形
- 解决安卓style文件中设置Activity退出动画无效或者被干扰的问题
- leetcode-java.T007_ReverseInteger 整数翻转
- 一个老程序员写给换行业的朋友的信
- 在前端开发过程中遇到的问题1
- leetcode-java.T005_LongestPalindromicSubstringTotal 给定一个字符串S,找出它的最大的回文子串
- leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
- Python ——raise
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字