• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift算法实现字符串转数字的方法示例

Swift算法实现字符串转数字的方法示例

作者:李峰峰博客 字体:[增加 减小] 来源:互联网 时间:2017-05-28

李峰峰博客 通过本文主要向大家介绍了swift算法,swift 字符串,swift 遍历字符串,swift 字符串长度,json字符串示例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实现的,所以自己打算使用Swift去实现一些主流的算法,既是对自己Swift的回顾,也是对自己算法方面的提高。

首先是用Swift实现字符串转数字,当然,肯定是不能使用Swift自带的字符串转数字的api。

题目:

使用Swift实现一个方法,输入字符串,输出该字符串转换成的数字。

例如,输入字符串“125”,输出数字125

实现思路及代码

首先先考虑可能输入情况,包括非法输入:

     情况1:所有字符均可直接转换成数字,如”125″

     情况2:包含一个或多个正负号,如”-125″、”–+125″

     情况3:包含非法字符,如”125lff”

如果是情况1,处理起来将会非常简单:首先利用ASCII编码将字符串“125”的每个字符转换为数字,之后转换成数字后直接用乘法和加法即可:1*100+2*10+3=123。

但是实际情况并不那么简单,由于情况2和情况3的存在,上面直接用乘法和加法肯定不可行的,中间还得加上相应的判断。最佳的方式是我们直接遍历字符串中的字符,先假设没有正负号和非法字符的存在,当遍历到第一个字符”1″的时候,intStr=1,当遍历到第二个字符”2″的时候,intStr = intStr*10+2=12,当遍历到最后一个字符”3″的时候,intStr = intStr*10+3=123。

关于”+”和”-“,只有当它们在字符串的开头的时候才表示正负,在字符串中间存在就是非法字符。我们可以通过ASCII编码判断”+”和”-“(对应的值分别为43和45),设个变量s表示多个”+”和”-“累积之后的正负。最后结果为intStr = s * intStr。当遍历字符串过程中发现了非法字符,则终止后续遍历,并给出提示。

实现代码:

//字符串转数字
func StrToInt(str:String) -> Int{
 
 //字符串不能为空
 guard str.isEmpty == false else {
 print("字符串不能为空~");
 return 0;
 }
 
 var s = 1
 var strInt:Int? = nil
 
 for characterInt in str.unicodeScalars {
 
 //只能包含数字或正负号
 let tempStrInt = characterInt.hashValue - "0".unicodeScalars.first!.hashValue
 guard (tempStrInt <= 9 && tempStrInt >= 0) || (characterInt.hashValue == 43 || characterInt.hashValue == 45) else {
  
  print("包含非法字符!");
  return 0;
  
 }
 
 //正负号只能存在于字符串开头
 if characterInt.hashValue == 43 || characterInt.hashValue == 45 {
  guard strInt == nil else {
  print("正负号只能存在于字符串开头!");
  return 0;
  }
 }
 
 //既然走到这一步,说明字符串合法
 //判断正负数
 if characterInt.hashValue == 43 || characterInt.hashValue == 45{
  s = s * ( 44 - characterInt.hashValue )
 }else{
  
  if strInt == nil {
  strInt = characterInt.hashValue - "0".unicodeScalars.first!.hashValue
  }else{
  //使用溢出运算符&*和&+避免数值过大导致溢出崩溃
  strInt = strInt! &* 10 &+ ( characterInt.hashValue - "0".unicodeScalars.first!.hashValue ) 
  }
 
 }
 
 }
 
 var result:Int? = 0
 if strInt != nil {
 result = s * strInt!
 }
 
 return result!;
}
</div>

在上述实现的算法中:

      输入”125″,输出125

      输入”+-125″,输出-125

      输入”1-25″,提示”正负号只能存在于字符串开头!”

      输入”1m25″,提示”包含非法字符”

总结

以上就是关于Swift算法实现字符串转数字的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift算法之二叉树实现的方法示例
  • Swift算法实现字符串转数字的方法示例
  • Swift算法实现逐字翻转字符串的方法示例
  • 简单理解插入排序算法及Swift版的代码示例
  • 快速排序算法在Swift编程中的几种代码实现示例
  • Swift实现快速排序算法的代码示例
  • Swift代码实现冒泡排序算法的简单实例

相关文章

  • 2017-05-28jstl之map,list访问遍历以及el表达式map取值的实现
  • 2017-05-28如何设计一个秒杀系统
  • 2017-05-28探讨Swift数组和字典
  • 2017-05-28详解Swift中的下标访问用法
  • 2017-05-28Swift中使用正则表达式的一些方法
  • 2017-05-22Swift 运算符
  • 2017-05-28Swift之UITabBarController 导航控制器的自定义
  • 2017-05-28完美解决gson将Integer默认转换成Double的问题
  • 2017-05-22Swift 访问控制
  • 2017-05-28详解Swift编程中下标的用法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信开发--自定义菜单查询返码乱码的解决方法
    • Swift3.0 GCD定时器的使用DEMO
    • 详解在swift中实现NSCoding的自动归档和解档
    • gson ajax 数字精度丢失问题的解决方法
    • 详解Swift面向对象编程中的方法(method)
    • Swift中的类class与结构体struct体学习笔记
    • 深入理解swift变量和函数
    • Swift使用WKWebView在iOS应用中调用Web的方法详解
    • 深入解析Swift代理模式
    • Swift与C语言指针结合使用实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有