首页 > 其他分享 >剑指 Offer 67. 把字符串转换成整数

剑指 Offer 67. 把字符串转换成整数

时间:2023-06-02 10:36:08浏览次数:44  
标签:转换成 Offer int res 67 整数 sign 字符 字符串

题目描述:

写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。

 

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;

假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

 

 

 

 

 

class Solution{
    public int strToInt(String str){
        char c[] = str.trim().toCharArray();//删除首尾空格
        if(c.length==0) return 0;//字符串为空则直接返回
        int res=0,bndry=Integer.MAX_VALUE/10;
        int i=1,sign=1;
        if(c[0]=='-') sign=-1;//保存负号
        else if(c[0]!='+') i=0;//若无符号位,则需从 i = 0 开始数字拼接
        for(int j=i;j<c.length;j++){
            if(c[j]<'0'||c[j]>'9') break;//遇到非数字的字符则跳出
            if(res>bndry||res==bndry&&c[j]>'7')
                return sign==1?Integer.MAX_VALUE:Integer.MIN_VALUE;//数字越界处理
            res = res*10+(c[j]-'0');//数字拼接
        }
        return sign*res;
    }
}

 

标签:转换成,Offer,int,res,67,整数,sign,字符,字符串
From: https://www.cnblogs.com/zhz123567/p/17451030.html

相关文章

  • 利用栈实现四则运算表达式求值----先将中缀表达式转换成后缀表达式,然后再求后缀表达式
    利用栈实现四则运算表达式求值,附Python代码中缀表达式和后缀表达式平时用到的标准的四则运算表达式就叫做中缀表达式,例如“9+(3-1)*3+10/2)”,特点是运算符在数字中间;后缀表达式就是一种把运算符放在数字后面的形式,“931-3*+102/+”即为上例中缀表达式对应的后缀......
  • 剑指 Offer 65. 不用加减乘除做加法
    题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用“+”、“-”、“*”、“/”四则运算符号。    classSolution{publicintadd(inta,intb){while(b!=0){//当进位为0时跳出intc=(a&b)<<1;//c=进位a^=......
  • 英国皇家植物园采用机器学习预测植物抗疟性,将准确率从 0.46 提升至 0.67
    内容一览:疟疾是严重危害人类生命健康的重大传染病,研究人员一直在致力于寻找新的植物源性抗疟疾化合物,以研发相关药物。近期英国皇家植物园利用机器学习算法有效预测了植物抗疟性,该研究成果目前已发表在《FrontiersinPlantScience》期刊上。关键词:植物学抗疟疾支持向量......
  • 6567: 清点人数 树状数组
    描述 NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去。由于NK中学的学生很多,在火车开之前必须清点好人数。初始时,火车上没有学生。当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能有同学上下。年级主任走到第m节车......
  • 剑指offer 58 2 左旋转字符串
    将左边n个字符转移到字符串结尾,比如s=abcdefg,n=2;输出cdefgab。看起来不难,但是解法还是挺多的,重要的是复杂度。还是先写下思路,常规的思路(暴力):就是定义两个字符串str1,str2,n之后的字符全部拷贝进入str2,然后再把k和k之前字符的拷贝进入str1,返回str2+str1。缺点嘛,空间复杂度高,时间......
  • 常用汉字约 7000 个「详:按照清华字频顺序 6763 个」
    常用6763个汉字使用频率表汉字频度表统计资料来源于清华大学,现公布如下,仅供参考。使用字数6763字(国标字符集),范文合计总字数86405823个。说明如下:假若认识500字,则覆盖面为78.53%。其余类推,列表如下:字数覆盖面(%)50078.532021000......
  • 剑指 Offer 64. 求1+2+…+n
    题目描述: 题解:利用带短路效应的递归 classSolution{publicintsumNums(intn){booleanx=n>1&&(n+=sumNums(n-1))>0;returnn;}} ......
  • 约瑟夫环(动态规划):剑指 Offer 62. 圆圈中最后剩下的数字
    题目描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下......
  • 如何截取电影画面转换成gif动图做微信表情包
    现在越来越多的GIF动态图片了,层出不穷的在更新,就像在QQ、微信里聊天,都会看到很多不同的好笑有趣的GIF图片,那么除了网上别人制作的GIF图片,我们自己也能够制作。截取电影或电视剧某几秒画面转换成GIF动图,然后发到微信上,做成微信表情包,就可以随时随地分享给好友了。由于表情包一般......
  • leetcode 671. Second Minimum Node In a Binary Tree
    Givenanon-emptyspecialbinarytreeconsistingofnodeswiththenon-negativevalue,whereeachnodeinthistreehasexactlytwoorzerosub-node.Ifthenodehastwosub-nodes,thenthisnode'svalueisthesmallervalueamongitstwosub-nodes.G......