ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.