diff options
author | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-03-10 00:36:13 -0600 |
commit | 7c60dee83b436e8e8a667bf9f191beced8de4fc3 (patch) | |
tree | eb7a24ee2067f92245c57bb118e85a1baf15df50 /other/valid_number.cpp | |
parent | 5d7cdc215e4ba1ec4cbb24c084cccb5e5e641468 (diff) | |
download | leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.tar.gz leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.zip |
Diffstat (limited to 'other/valid_number.cpp')
-rw-r--r-- | other/valid_number.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/other/valid_number.cpp b/other/valid_number.cpp new file mode 100644 index 0000000..6395fe0 --- /dev/null +++ b/other/valid_number.cpp @@ -0,0 +1,45 @@ +#include "leetcode.h" + +class Solution { +public: + bool isNumber(string s) { + int state = 0, flag = 0; + while (s[0] == ' ' || s[s.size() - 1] == ' ') + s.erase(s.size() - 1, 1); + for (int i = 0; i < s.size(); i++) { + if ('0' <= s[i] && s[i] <= '9') { + flag = 1; + if (state <= 2) + state = 2; + else + state = (state <= 5) ? 5 : 7; + } else if (s[i] == '+' || s[i] == '-') { + if (state == 0 || state == 3) + state++; + else + return false; + } else if (s[i] == '.') { + if (state <= 2) + state = 6; + else + return false; + } else if (s[i] == 'e') { + if (flag && (state == 2 || state == 6 || state == 7)) + state = 3; + else + return false; + } else + return false; + } + return (state == 2 || state == 5 || (flag && state == 6) || state == 7); + } +}; + +int main() { + Solution obj; + string s = "3"; + if (obj.isNumber(s)) + cout << "true"; + else + cout << "false"; +} |