美文网首页
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字符串转整数

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