日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...

發布時間:2024/4/13 java 87 豆豆

前言

最近學完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!;

}

在上述實現的算法中:

輸入”125″,輸出125

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

輸入”1-25″,提示”正負號只能存在于字符串開頭!”

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

總結

以上就是關于Swift算法實現字符串轉數字的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

總結

以上是生活随笔為你收集整理的学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品视频一区二区 | 亚洲精品网站在线播放gif | 台湾佬中文在线 | 性盈盈影院中文字幕 | 美女网站在线看 | 校园春色av | 午夜在线看 | 天天久久综合 | 在线观看污污网站 | 亚洲色图在线视频 | av一级二级 | 中文在线字幕免费观 | 欧美性做爰免费观看 | 成年人网站免费看 | www.香蕉视频 | 狠狠操一区二区 | 理论片在线观看理伦片 | 国产三区在线成人av | 欧美性猛交xxxx乱大交3 | 日韩精品黄 | 欧美一级在线免费观看 | 欧美俄罗斯乱妇 | 日韩美女一级片 | 久久精品九九 | 成人综合一区 | 欧美一级免费在线观看 | 婷婷激情四射 | 国产在线免费视频 | 一区二区三区色 | 精品国产免费人成在线观看 | 久久在线播放 | 亚洲视频四区 | 国产午夜精品一区二区三区四区 | 男女搞黄网站 | 成人午夜视频精品一区 | 免费成人av片 | 免费三片60分钟 | 亚洲一卡二卡在线 | 欧美一区不卡 | 女性喷水视频 | 色一色成人网 | 免费无码肉片在线观看 | 日韩精品一区在线观看 | 欧美日本不卡 | 国产永久免费无遮挡 | 国产亚洲精品成人无码精品网站 | 夜夜躁狠狠躁日日躁av | 性久久久久久久久久 | 日韩一二三级 | 一区二区不卡在线观看 | 嫩草视频在线播放 | 午夜国产一区二区三区 | 大尺度激情吻胸视频 | 性爱免费在线视频 | 国产成人主播 | 国产成人短视频在线观看 | 特级丰满少妇一级aaaa爱毛片 | 女人下面流白浆的视频 | 日本三级午夜理伦三级三 | 女子spa高潮呻吟抽搐 | 亚州精品视频 | 宅男噜噜噜| 欧美a网| 国产精品成人va在线观看 | 中文字幕高清在线 | 丰满多毛的大隂户视频 | 久久成人精品视频 | 亚洲第一中文字幕 | 久久久最新 | 国产午夜精品在线观看 | 激情欧美日韩 | 日韩国产精品久久 | 国产精品视频区 | 精品人妻一区二区三区日产乱码卜 | 日韩精品久久久久久久的张开腿让 | 国产图片一区 | 国产av电影一区二区三区 | 射黄视频| 久操福利视频 | 国产亚洲色婷婷久久 | 国产无码日韩精品 | 三级男人添奶爽爽爽视频 | 欧美日韩一区二区在线观看视频 | 国产精品资源网 | 农夫色综合 | 日韩av有码| 国产91精品久久久久久久 | 亚洲精品视频播放 | 亚洲熟妇一区二区 | 国产一区二区视频免费 | 国产99免费 | 免费性网站 | 中日韩中文字幕一区二区 | 99热这里只有精品8 国产一卡二 | 岛国av在线 | 超碰凹凸| 成人做爰9片免费视频 | 精品久久国产视频 | 一级淫片免费看 |