From 79a9c52fa923fc78074d88463449a8b7f95ca3ef Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Tue, 26 Dec 2017 01:33:40 +0800 Subject: update leetcode solution --- Computer_Science/leetcode/65-valid_number.c | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Computer_Science/leetcode/65-valid_number.c (limited to 'Computer_Science/leetcode/65-valid_number.c') diff --git a/Computer_Science/leetcode/65-valid_number.c b/Computer_Science/leetcode/65-valid_number.c new file mode 100644 index 0000000..b8ee227 --- /dev/null +++ b/Computer_Science/leetcode/65-valid_number.c @@ -0,0 +1,47 @@ +#include + +bool isNumber(char* s) { + char *p; + int dot_flag = 0; + int e_flag = 0; + + for(; *s == ' '; s++) + ; + if(*s == '+' || *s == '-') + s++; + + p = s; + + /* trim tail */ + for(; *p != '\0'; p++) + ; + for(p--; p != s && *p == ' '; p--) + ; + *(p + 1) = '\0'; + + p = s; + if(*p == '\0') return false; + + for(; *p != '\0'; p++) { + if(*p <= '9' && *p >= '0') + continue; + else if(*p == '.') { + if(dot_flag == 1) + return false; + if((s == p && *(p + 1) == '\0') + || *(p - 1) == 'e') + return false; + dot_flag = 1; + continue; + } else if(*p == 'e') { + if(e_flag == 1) + return false; + if(s == p || *(p + 1) == '\0' || (*(p - 1) == '.' && p - 1 == s)) + return false; + e_flag = 1; + } else + return false; + } + + return true; +} -- cgit v1.2.3