leetcode小题解析

描述
Given an array of integers, return indices of the two numbers such that they add up to a specific target.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

分析
该题的说明比较模糊,第一个单词我们都对每一位字符进行累计,这样可以累积出从A到Z每个单词出现了几次,然后我们统计第二个单词,再去计算从A到Z每个单词出现了几次。如果两者相等,则认为两个单词是“同素异形体”所以需要慢慢进行尝试来弄清楚哪些是合法的数字。

代码
class Solution:


def isNumber(self, s):
    """
    :type s: str
    :rtype: bool
    """
    # 去除前后的空格
    temp_s = s.strip()
    numberSeen = False
    pointSeen = False
    eSeen = False
    numberAftereSeen = True
    for i in range(len(temp_s)):
        if temp_s[i].isdigit():
            numberSeen = True
            numberAftereSeen = True
        elif temp_s[i] == ".":
            # 小数点前面不能出现e和小数点
            if eSeen or pointSeen:
                return False
            pointSeen = True
        elif temp_s[i] == "e":
            # e前面不能出现e,并且需要有数字
            if eSeen or not numberSeen:
                return False
            eSeen = True
            # 保证e后面也有数字
            numberAftereSeen = False
        elif temp_s[i] in ["+", "-"]:
            # 符号只能再0位和e后面一位
            if i != 0 and temp_s[i-1] != "e":
                return False
        else:
            return False
    return numberSeen and numberAftereSeen

原文地址:https://segmentfault.com/a/1190000016460077

posted @ 2018-11-16 16:29  sfornt  阅读(184)  评论(0编辑  收藏  举报