boolean isScientificNotation(String s) {
        s = s.trim();
        char[] arr = s.toCharArray();
        int index_of_e = indexOfChar(arr, 'e');
        if (index_of_e > 0) {
            // e 左边第1倍不是数字，并且也不是小数点
            if (!isDigital(arr[index_of_e - 1]) && arr[index_of_e - 1] != '.') {
                return false;
            }
        }

        // 3e1
        // 0.e => false
        // 4e3.
        // .2e8
        // .e1 => false
        // 96 e5 => false
        // " 005047e+6"

        // 第一位不能是e
        if (index_of_e > 0) {
            // 科学计数法中，最后一位不能是点
            if (isDot(arr[arr.length - 1])) {
                return false;
            }
            if (isDot(arr[0])) {
                return isInteger(s.substring(1, index_of_e))
                        && isInteger(s.substring(index_of_e + 1, s.length()));

            }
            return isNormalNumber(s.substring(0, index_of_e))
                    && isInteger(s.substring(index_of_e + 1, s.length()));
        }
        return false;
    }