• 剑指offer 面试20题


    面试20题:

    题目:表示数值的字符串

    题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    解题思路一:利用Python中的float强转,如果可以那么它是一个合法的数值的字符串,否则不是。

    解题代码:

    # -*- coding:utf-8 -*-
    class Solution:
        # s字符串
        def isNumeric(self, s):
            # write code here
            try:
                return float(s)
            except:
                return 0
            

    解题思路二:考虑是否有e存在,如果有,e后面必须有数字,且必须是整数(正整数o或负整数),如果没有e存在,则判断它是不是普通的数字。详见下面代码。

    解题代码:

    # -*- coding:utf-8 -*-
    class Solution:
        # s字符串
        def isNumeric(self, s):
            # write code here
            if not s or len(s)<=0:
                return False
            alist=[i.lower() for i in s]
            if 'e' in alist:
                index=alist.index('e')
                front=alist[:index]
                behind=alist[index+1:]
                if '.' in behind or len(behind)==0:
                    return False
                isfront=self.isDigit(front)
                isbehind=self.isDigit(behind)
                return isfront and isbehind
            else:
                return self.isDigit(alist)
            
        def isDigit(self,alist):
            dotNum=0
            allow_num = ['0', '1', '2', '3', '4', '5',
                         '6', '7', '8', '9', '+', '-', '.']
            for i in range(len(alist)):
                if alist[i] not in allow_num:
                    return False
                if alist[i]=='.':
                    dotNum += 1
                if alist[i] in '+-' and i!=0:
                    return False
            if dotNum>1:
                return False
            return True
  • 相关阅读:
    Xcode fold code All In One
    Xcode iOS project rename All In One
    SwiftUI App Sticker All in One
    hash算法
    TCP
    gRPC目录
    Go客户端流式gRPC
    服务端流式RPC
    protobuf简单使用
    protobuf安装
  • 原文地址:https://www.cnblogs.com/yanmk/p/9196088.html
Copyright © 2020-2023  润新知