65. Valid Number

use flags to get the result in one loop

class Solution {
    public boolean isNumber(String s) {
        boolean ePresent = false;
        boolean dotPresent = false;
        boolean numPresent = false;
        
        for (int i =0; i<s.length(); i++){
            char ch = s.charAt(i);
            // use of switch clause
            switch(ch){
                case '.':
                    if(ePresent || dotPresent) return false;
                    dotPresent = true;
                    break;
                case 'e':
                case 'E':
                    if(ePresent || !numPresent) return false;
                    ePresent = true;
                    numPresent = false;
                    break;
                case '+':
                case '-':
                    // remember: it is && not ||
                    if(i!=0 && (s.charAt(i-1)!='E') && (s.charAt(i-1)!='e')) return false;
                    break;
                default:
                    if(ch>='0' && ch<='9') numPresent = true;
                    else return false;
            }
        }
        return numPresent;
    }
}

Last updated