剑指offer字符串前三题

120 阅读2分钟

1#### 剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

    def replaceSpace(self, s: str) -> str:
        res=''
        for i in s:
            if i==' ':
                res+='%20'
            else:
                res+=i

        return res

简单替换即可

剑指 Offer 58 - II. 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

    def reverseLeftWords(self, s: str, n: int) -> str:
        return s[n:]+s[:n]

取巧利用切片即可

剑指 Offer 20. 表示数值的字符串

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

数值(按顺序)可以分成以下几个部分:

若干空格 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 若干空格 小数(按顺序)可以分成以下几个部分:

(可选)一个符号字符('+' 或 '-') 下述格式之一: 至少一位数字,后面跟着一个点 '.' 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字 一个点 '.' ,后面跟着至少一位数字 整数(按顺序)可以分成以下几个部分:

(可选)一个符号字符('+' 或 '-') 至少一位数字 部分数值列举如下:

["+100", "5e2", "-123", "3.1416", "-1E-16", "0123"]
部分非数值列举如下:

["12e", "1a3.14", "1.2.3", "+-5", "12e+5.4"]

class Solution:
    p = re.compile(r'^[+-]?(\.\d+|\d+\.?\d*)([eE][+-]?\d+)?$')
    def isNumber(self, s: str) -> bool:
        return bool(self.p.match(s.strip()))

利用正则进行匹配替换 .注意可以现将小数正则写出,再写出整数,最后写出数值,然后再合并

WIN_20230620_21_44_31_Pro.jpg

class Solution: 
def isNumber(self, s: str) -> bool:   
    try:   
        float(s) return True 
    except : return False

取巧利用float函数