牛客網字串識別數字

2021-10-04 11:38:30 字數 3060 閱讀 4188

原題是為了識別數字,實現如下:

#include

#include

#include

using

namespace std;

class

solution

bool

isnumberic

(const

char

* str)

}int positionofe =-1

;// int positionofpoint = -1;

int numofpoint =

count

(tmpstr.

begin()

, tmpstr.

end(

), point)

;//小數點數量

int numofp =

count

(tmpstr.

begin()

, tmpstr.

end(

), sciencecountp)

;//e數量

int numofn =

count

(tmpstr.

begin()

, tmpstr.

end(

), sciencecountn)

;//e數量

//int numberofsign = count(tmpstr.begin(), tmpstr.end(), positive) + count(tmpstr.begin(), tmpstr.end(), negtive);

if(numofpoint >1)

return

false

;//小數點多餘1,非法;

if(numofn+numofp >1)

return

false

;//科學計數多餘1,非法。這裡將12e(12e12)這種套娃式表達視為無效;

//以科學計數法為界分割字串,兩個子串中不可再有字元。if(

(string::npos !=

( positionofe = tmpstr.

find

(sciencecountp)))\

||(string::npos !=

(positionofe = tmpstr.

find

(sciencecountn)))

)if(string::npos != substr1.

find

(point)

)return

false

;//科學表示法的指數字置不能有小數點

//任乙個子串中正負號數量不可大於1;if(

(1<

(count

(substr0.

begin()

, substr0.

end(

), positive)

+count

(substr0.

begin()

, substr0.

end(

), negtive)))

||(1<

(count

(substr1.

begin()

, substr1.

end(

), positive)

+count

(substr1.

begin()

, substr1.

end(

), negtive)))

)//若存在正負號,則符號必須在子串的首部;if(

(string::npos != substr0.

find

(positive))&&

(0!= substr0.

find

(positive)))

return

false;if

((string::npos != substr1.

find

(positive))&&

(0!= substr1.

find

(positive)))

return

false;if

((string::npos != substr0.

find

(negtive))&&

(0!= substr0.

find

(negtive)))

return

false;if

((string::npos != substr1.

find

(negtive))&&

(0!= substr1.

find

(negtive)))

return

false;}

else

return

true;}

};class

stop_watch

~stop_watch()

public

:void

start()

void

stop()

void

restart()

double

elapsed()

double

elapsed_ms()

double

elapsed_second()

private

: large_integer freq_;

large_integer begin_time_;

long

long elapsed_;};

intmain()

說明:這個**塊分成了多個部分,solution部分是原題答案。為了驗證其執行時間,網上找了乙個輪子精確記錄時間,基於windows庫(輪子的作者找不到了,有人看到請告知我一下)。

邏輯很簡單,就是排除所有特殊字元,數特定字元的個數;沒有異常再從e或e的位置切分字元,檢查 . + - e e 的位置是否正確。

最後,這一答案檢查題目所給的字元正確。

牛客網上的答案都是純c實現的,那不是我想要的答案。

牛客網 字串價值

熱度指數 7時間限制 1秒空間限制 32768k 有一種有趣的字串價值計算方式 統計字串中每種字元出現的次數,然後求所有字元次數的平方和作為字串的價值 例如 字串 abacaba 裡面包括4個 a 2個 b 1個 c 於是這個字串的價值為4 4 2 2 1 1 21 牛牛有乙個字串s,並且允許你從s...

牛客網 倒置字串

題目描述 將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 這道題我想到兩種方法 1 從後往前遍歷字串,以空格分割,找到每個單詞,然後再遍歷每個單詞,將單詞逐個鏈到新字串上,注意需要將第乙個單詞單獨處理,具體 如下 include ...

牛客網 倒置字串

將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 示例輸入 i like beijing....