美文网首页
Swfit字符串转整数

Swfit字符串转整数

作者: 那个写代码的 | 来源:发表于2018-08-01 10:57 被阅读0次

使用场景

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。如果数值超过可表示的范围,则返回  INT_MAX (231 − 1) 或 INT_MIN (−231) 。

代码实现

funcmyAtoi(_str:String) ->Int{

        var newStr =String() //记录数字字符串

        for i in 0..<str.count {

            let startIndex = str.index(str.startIndex, offsetBy: i) 

            let endIndex = str.index(str.startIndex, offsetBy: i+1)

            let char = str[startIndex..<endIndex] //根据开始位置跟结束位置取出单个字符

           //char.utf8.first! 。。。将字符转成ASCII码值

            if(char.utf8.first! ==32){   //空格对应的ASCII码值

                if(newStr.count<1){  //当空格是第一个字符时,直接进行下一次循环

                   continue

                }else{//当空格不是第一个字符时,结束for循环

                   break

                }

            }else if(char.utf8.first!  > 47 && char.utf8.first! < 58){ //判断字符是否为0-9的数字

                newStr = newStr + char

            }elseif(char.utf8.first! == 43|| char.utf8.first! ==45) && newStr.count < 1{

               //当字符是"+"或"-"时,且newStr为空才将"+"或"-"加入newStr中

                newStr = newStr + char

            }else{ 

                break

            }

        }

      //去除头尾空格

        newStr = newStr.trimmingCharacters(in: .whitespacesAndNewlines)

        ifnewStr.count<1|| newStr =="-"|| newStr =="+"{

            return 0

        }

     //处理数字字符串转Int溢出的情况

        guard Int(newStr) !=nil else{

            letoneStr =  newStr[str.index(str.startIndex, offsetBy:0)..

            ifoneStr =="-"{

                returnInt(Int32.min)

            }

            return Int(INT32_MAX)

        }

        if Int(newStr)! < Int32.min

            return Int(Int32.min)

        }else if Int(newStr)!  > Int32.max{

            return Int(Int32.max)

        }

        return Int(newStr)!

    }

注:这是LeetCode的题目,大家有兴趣可以去看原题。入口

相关文章

  • Swfit字符串转整数

    使用场景 假设我们的环境只能存储 32 位有符号整数,其数值范围是[−231, 231− 1]。如果数值超过可表示...

  • 机试常用算法和题型-进制转换专题

    使用sscanf将字符数组转为整型的办法 字符串到整数 整数到字符串(十进制转字符串) 十进制转其他进制 其他进制...

  • 二进制、十进制互转

    十进制整数 转 二进制数组 二进制字符串 转 十进制整数 二进制数组 转 十进制整数

  • LeetCode-12 整数转罗马数字

    题目:12. 整数转罗马数字 难度:中等 分类:数学、字符串 解决方案:整数比较 今天我们学习第12题整数转罗马数...

  • 字符串转整数

    题目 实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符...

  • 字符串转整数

  • 字符串转整数

    题目:输入字符串,转变为对应整数 样式:输入"123",输出123 解法:遍历输出 主要在于判断正负溢出情况

  • 字符串转整数

  • 4,字符串转整数/数组与字符串

    字符串转整数 (atoi) 实现 atoi,将字符串转为整数。 在找到第一个非空字符之前,需要移除掉字符串中的空格...

  • 【C/C++】字符串转数字

    字符串转整数,不仅是面试题常考题目,也是日常常用函数。这里对其中的区别做一个备注,便于以后查看。 一、字符串转整数...

网友评论

      本文标题:Swfit字符串转整数

      本文链接:https://www.haomeiwen.com/subject/nqylvftx.html