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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何判断输入的是字符还是数字_[Leetgo]判断字符串是否为数字

發布時間:2023/12/10 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何判断输入的是字符还是数字_[Leetgo]判断字符串是否为数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題解分析代碼實現

實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。

題解分析

一個標識數字的字符串可能包括以下字符類型:

  • 空格;

  • 數組:0~9;

  • 正負號

  • 小數點

  • 冪符號:e/E;

為了解決此類問題,需要使用有限狀態自動機,字符串有如下狀態:

  • 0:開始的空格;

  • 1:冪符號前的正負號;

  • 2:小數點前的數字;

  • 3:小數點、小數點后的數字;

  • 4:小數點前為空格時:小數點、小數點后的數字;

  • 5:冪符號;

  • 6:冪符號后的正負號;

  • 7:冪符號后的數字;

  • 8:結尾的空格;
    合法的結束狀態有:2、3、7、8。

狀態轉移如下圖所示:

states

復雜度分析:

  • 時間:需要遍歷整個字符串的長度,且狀態轉移為O(1),所以為O(N);

  • 空間:只需常數額外空間,所以為O(1);

代碼實現

狀態使用字典列表表示,具體實現為:

func?isNumber(strNum?string)?bool?{
????state?:=?[]map[byte]int{
????????{'?':0,?'s':1,?'d':2,?'.':4},????//?0:?start?with?'blank'
????????{'d':2,?'.':4},??????????????????//?1:?'sign'?before?e
????????{'d':2,?'.':3,?'e':5,?'?':8},????//?2:?'digit'?before?'.'
????????{'d':3,?'e':5,?'?':8},???????????//?3:?'digit'?after?'.'
????????{'d':3},?????????????????????????//?4:?'digit'?after?'.'(‘blank’?before?'dot')
????????{'s':6,?'d':7},??????????????????//?5:?'e'
????????{'d':7},?????????????????????????//?6:?'sign'?after?'e'
????????{'d':7,?'?':8},??????????????????//?7:?'digit'?after?e
????????{'?':8},?????????????????????????//?8:?end?with?'blank'
????}

????index?:=?0
????var?key?byte
????for?_,ch?:=?range?strNum?{
????????if?ch>='0'?&&?ch?<=?'9'{
????????????key?=?'d'
????????}else?{
????????????switch?ch?{
????????????case?'+',?'-':
????????????????key?=?'s'
????????????case?'e',?'E':
????????????????key?=?'e'
????????????case?'.',?'?':
????????????????key?=?byte(ch)
????????????default:
????????????????key?=?'?'
????????????}
????????}

????????if?_,ok:=state[index][key];?!ok{
????????????return?false
????????}
????????index?=?state[index][key]
????}

????switch?index?{
????case?2,3,7,8:
????????return?true
????default:
????????return?false
????}
}

總結

以上是生活随笔為你收集整理的如何判断输入的是字符还是数字_[Leetgo]判断字符串是否为数字的全部內容,希望文章能夠幫你解決所遇到的問題。

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