-
65. Valid Number릿코드(LEETCODE) 2020. 2. 10. 16:46반응형
https://leetcode.com/problems/valid-number
O 풀이
exp 등
class Solution { public: string RemoveSpace(string s){ int sLen = s.size(); int nLeftPos = 0; for( int i = nLeftPos; i < sLen; i++ ) { if( s[i] != ' ' ) break; nLeftPos++; } if( nLeftPos == sLen ) { string empty; return empty; } int nRightPos = sLen - 1; for( int i = nRightPos; i >= 0; i-- ) { if( s[i] != ' ' ) break; nRightPos--; } return s.substr(nLeftPos, nRightPos - nLeftPos + 1); } bool isNumber(string s) { //좌우 공백 가능, 중앙 불가 s = RemoveSpace(s); int sLen = s.size(); if( sLen == 0 ) return false; //기호 2개 연속 불가 //e 뒤 .불가 bool bNum1 = false; bool bSign1 = false; bool bDecimal1 = false; bool bExp = false; bool bNum2 = false; bool bSign2 = false; for( int i = 0; i < sLen; i++ ) { char c = s[i]; if( c == 'e' ) { if( bNum1 == false || bExp ) return false; bExp = true; } else if( c == '.') { if( bDecimal1 || bExp ) return false; bDecimal1 = true; } else if( c == '+' || c == '-' ) { if( bExp ) { if( bNum2 || bSign2 ) return false; bSign2 = true; } else { if( bNum1 || bSign1 || bDecimal1 ) return false; bSign1 = true; } } else if( c >= '0' && c <= '9' ) { if( bExp ) bNum2 = true; else bNum1 = true; } else return false; } if( bExp && bNum2 == false ) return false; else if( bDecimal1 && bNum1 == false ) return false; return true; } };
반응형'릿코드(LEETCODE)' 카테고리의 다른 글
703. Kth Largest Element in a Stream (0) 2020.02.11 1338. Reduce Array Size to The Half (0) 2020.02.11 263. Ugly Number (1) 2020.02.10 67. Add Binary (0) 2020.02.10 896. Monotonic Array (0) 2020.02.10