zoukankan      html  css  js  c++  java
  • Python 简明教程 --- 8,Python 字符串函数

    微信公众号:码农充电站pro

    个人主页:https://codeshellme.github.io

    好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释。

    —— Steve McConnell

    目录

    在这里插入图片描述

    字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数。

    建议:

    由于字符串函数较多,对于新手来说,不必要一开就掌握所有的函数用法,可以先粗略的看一遍,有个大概印象,到真正用的着的时候,再来详细查看也可。用的次数多了,自然就记住了。

    我们可以通过dir() 函数来查看一个对象支持的方法属性有哪些,通过help() 函数查看某个方法的详情。

    注意:
    1,对象的概念会在后续章节详细介绍
    2,这里我们无需过多的区分函数方法的不同,暂时可以认为函数方法相同

    示例:

    s = 'abc'	# s 是一个字符串
    >>> dir(s)  # 查看字符串支持的方法
    ['__add__', '__class__', '__contains__', 
    '__delattr__', '__dir__', '__doc__', 
    '__eq__', '__format__', '__ge__', 
    '__getattribute__', '__getitem__', 
    '__getnewargs__', '__gt__', '__hash__', 
    '__init__', '__init_subclass__', '__iter__', 
    '__le__', '__len__', '__lt__', '__mod__', 
    '__mul__', '__ne__', '__new__', '__reduce__', 
    '__reduce_ex__', '__repr__', '__rmod__', 
    '__rmul__', '__setattr__', '__sizeof__', 
    '__str__', '__subclasshook__', 
    'capitalize', 'casefold', 'center', 
    'count', 'encode', 'endswith', 'expandtabs', 
    'find', 'format', 'format_map', 'index', 
    'isalnum', 'isalpha', 'isdecimal', 'isdigit', 
    'isidentifier', 'islower', 'isnumeric', 
    'isprintable', 'isspace', 'istitle', 'isupper', 
    'join', 'ljust', 'lower', 'lstrip', 'maketrans', 
    'partition', 'replace', 'rfind', 'rindex', 
    'rjust', 'rpartition', 'rsplit', 'rstrip', 
    'split', 'splitlines', 'startswith', 'strip', 
    'swapcase', 'title', 'translate', 'upper', 'zfill']
    
    >>> help(s.find)	# 查看字符串的find 方法详情
    Help on built-in function find:
    
    find(...) method of builtins.str instance
        # 方法原型
        # -> 符号之前是参数
        # -> 符号之后时返回值类型
        S.find(sub[, start[, end]]) -> int		
        
        # 方法介绍
        Return the lowest index in S where substring sub is found,
        such that sub is contained within S[start:end].  Optional
        arguments start and end are interpreted as in slice notation.
        
        # 方法返回值
        Return -1 on failure.
    (END)
    

    Python 中双下划线 样式的方法__xxx__,被称为魔法方法(这里不做详细介绍),这里我们主要关注非魔法方法

    这里的dir(s) 显示的所有方法中,除了魔法方法外,还有44 个方法,我们可以粗略的将这些方法分为以下8 类:

    1. 字符串查找
    2. 字符大小写
    3. 判断字母数字
    4. 字符串填充
    5. 字符串格式化
    6. 字符串截断
    7. 字符串分割
    8. 其它方法

    下面我们逐一进行介绍。

    1,字符串查找

    1.find方法

    作用:从左开始查找,返回子串subS[start:end] 中的第一个下标
    原型:S.find(sub[, start[, end]]) -> int
    参数 sub:子字符串
    参数 start:开始位置,可省,默认为 0
    参数 end:结束位置,可省,默认为 len(S)
    返回值:如果找到返回下标,否则返回 -1

    示例:

    >>> 'abcabcabc'.find('ca')
    2      # 找到了,返回下标
    >>> 'abcabcabc'.find('bbc')
    -1     # 没找到,返回 -1
    

    2.rfind方法

    作用:从右开始查找,返回子串subS[start:end] 中的第一个下标
    原型:S.rfind(sub[, start[, end]]) -> int
    参数:同 find 方法
    返回值:如果找到返回下标,否则返回 -1

    示例:

    >>> 'abcabcabc'.rfind('ca')
    5
    >>> 'abcabcabc'.rfind('bbc')
    -1
    

    3.index方法

    作用:从左开始查找,返回子串subS[start:end] 中的第一个下标
    原型:S.index(sub[, start[, end]]) -> int
    参数 sub:子字符串
    参数 start:开始位置,可省,默认为 0
    参数 end:结束位置,可省,默认为 len(S)
    返回值:如果找到返回下标,否则抛出ValueError 异常

    示例:

    >>> 'abcabcabc'.index('ca')
    2
    >>> 'abcabcabc'.index('bbc')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found    # ValueError 异常
    

    关于Python 异常,将在后续章节详细介绍

    4.rindex方法

    作用:从右开始查找,返回子串subS[start:end] 中的第一个下标
    原型:S.rindex(sub[, start[, end]]) -> int
    参数:同index 方法
    返回值:如果找到返回下标,否则抛出ValueError 异常

    示例:

    >>> 'abcabcabc'.rindex('ca')
    5
    >>> 'abcabcabc'.rindex('bbc')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found
    

    5.count方法

    作用:统计子串subS[start:end] 中出现的次数
    原型:S.count(sub[, start[, end]]) -> int
    参数 sub:子字符串
    参数 start:开始位置,可省,默认为 0
    参数 end:结束位置,可省,默认为 len(S)
    返回值:子串出现的次数

    示例:

    >>> 'abcabcabc'.count('bc')
    3
    

    2,字符大小写

    6.capitalize方法

    作用:将字符串S的首字符变为大写,其余字符变为小写,对中文无效
    原型:S.capitalize() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'AbCdE'.capitalize()
    'Abcde'
    

    7.casefold方法

    作用:将字符串S中的所有字符变为小写,对中文无效
    原型:S.casefold() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'AbCdE'.casefold()
    'abcde'
    

    8.swapcase方法

    作用:将字符串S 中的大写字符转为小写,小写字符转为大写,对中文无效
    原型:S.swapcase() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'AbCdE中国'.swapcase()
    'aBcDe中国'
    

    9.istitle方法

    作用:判断S 中的单词,是否全都首字母大写,且其它字符小写
    原型:S.istitle() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'Abc De fj'.istitle()
    False
    >>> 'Abc De Fj'.istitle()
    True
    >>> 'Abc De Fj 中国'.istitle() # 可以有中文
    True
    >>> '中国'.istitle()           # 不能只有中文
    False
    

    10.title方法

    作用:将每个非字母后的第一个字母变为大写
    原型:S.title() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'a3bc-abc abc'.title()
    'A3Bc-Abc Abc'
    

    11.islower方法

    作用:判断S 中的字符是否全是小写字符
    原型:S.islower() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc'.islower()
    True
    >>> 'aBc'.islower()      # 有大写字符,返回 False
    False
    >>> 'abc中国'.islower()  # 英文字符全是小写,且包含中文,返回 True
    True
    >>> '中国'.islower()     # 只有中文,返回 False
    False
    >>> ''.islower()
    False
    

    12.isupper方法

    作用:判断S 中的字符是否全是大写字符
    原型:S.isupper() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'ABC'.isupper()		# 所有字符全是大写,返回 True
    True
    >>> 'Abc'.isupper()     # 有大写,有小写,返回 False
    False
    >>> 'ABC中国'.isupper() # 所有字符全是大写,并包含中文,返回 True
    True
    >>> '中国'.isupper()    # 只有中文,返回 False
    False
    >>> ''.isupper()       # 空字符串,返回 False
    False
    

    13.lower方法

    作用:将S 中的所有大写字符转为小写
    原型:S.lower() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'AbC'.lower()
    'abc'
    

    14.upper方法

    作用:将S 中的所有小写字符转为大写
    原型:S.upper() -> str
    参数:无
    返回值:新的字符串

    示例:

    >>> 'AbC'.upper()
    'ABC'
    

    3,判断字母数字

    15.isalnum方法

    作用:判断S 中所有的字符是否都是字母或数字
    原型:S.isalnum() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc'.isalnum()       # 英文字符,返回 True
    True
    >>> 'abc123'.isalnum()	  # 英文字符或数字,返回 True
    True
    >>> 'abc中国'.isalnum()	  # 英文字符或汉字,返回 True
    True
    >>> 'abc;'.isalnum()      # 有符号';' 返回 False
    False
    >>> 'abc-'.isalnum()	  # 有符号'-' 返回 False
    False
    >>> ''.isalnum()          # 空字符串,返回 False
    False
    

    16.isalpha方法

    作用:判断S 中所有的字符是否都是字母
    原型:S.isalpha() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc'.isalpha()			# 都是英文字符,返回 True
    True
    >>> 'abc中国'.isalpha()     # 英文字符和汉字,返回 True
    True
    >>> 'abc中国123'.isalpha()	# 有数字,返回 False
    False
    >>> 'abc中国-'.isalpha()    # 有符号,返回 False
    False
    >>> ''.isalpha()            # 空字符串,返回 False
    False
    

    17.isdecimal方法

    作用:判断S 中是否只包含十进制字符
    原型:S.isdecimal() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc'.isdecimal()     # 不包含数字,返回 False
    False
    >>> 'abc123'.isdecimal()  # 除了数字,还有英文字符,返回 False
    False
    >>> '123'.isdecimal()     # 只有数字,返回 True
    True
    >>> '123-'.isdecimal()    # 除了数字,还有符号,返回 False
    False
    >>> ''.isdecimal()        # 空字符串,返回 False
    False
    >>> '一二三'.isdecimal()
    False
    

    18.isdigit方法

    作用:判断S 中是否只包含数字
    原型:S.isdigit() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> '123'.isdigit()
    True
    >>> '123e'.isdigit()
    False
    

    19.isnumeric方法

    作用:判断S是否只由数字组成,数字可以是罗马数字,汉字数字等
    原型:S.isnumeric() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> '一二三'.isnumeric()
    True
    >>> '壹贰叁'.isnumeric()
    True
    >>> '123'.isnumeric()
    True
    >>> 'abc'.isnumeric()
    False
    

    20.isidentifier方法

    作用:判断S 是否是有效的Python 标识符
    原型:S.isidentifier() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc'.isidentifier()
    True
    >>> '5abc'.isidentifier()	# 不能以数字开头
    False
    >>> '_5abc'.isidentifier()
    True
    >>> ' _5abc'.isidentifier() # 不能以空格开头
    False
    >>> '_5abc;'.isidentifier() # 不能有标点符号
    False
    

    21.isprintable方法

    作用:判断S 中的字符,是否全部可打印
    原型:S.isprintable() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> 'abc中国'.isprintable()
    True
    >>> 'abc
    '.isprintable()  # 换行符不可见
    False
    >>> 'abc	'.isprintable()  # 制表符不可见
    False
    >>> 'abc
    '.isprintable()  # 回车符不可见
    False
    

    22.isspace方法

    作用:判断S 中是否全是空白字符
    原型:S.isspace() -> bool
    参数:无
    返回值TrueFalse

    示例:

    >>> '
    	 '.isspace()
    True
    >>> 'abc
    	 '.isspace()
    False
    

    4,字符串填充

    23.center方法

    作用:返回一个总长度为width 的字符串,S 居中,其它字符以fillchar 填充
    原型:S.center(width[, fillchar]) -> str
    参数 width:新的字符串的总长度,当 width 小于 S 的长度时,直接返回 S
    参数 fillchar:填充字符,可省,默认为空格
    返回值:新的字符串

    示例:

    >>> 'AbCdE'.center(20, '*')
    '*******AbCdE********'
    

    24.ljust方法

    作用:以S 左对齐,返回一个长度为width 的新字符串,当len(S) 小于width 时,用fillchar 字符填充
    原型:S.ljust(width[, fillchar]) -> str
    参数:同 center 方法
    返回值:新的字符串

    示例:

    >>> 'abc'.ljust(5, '*')
    'abc**'
    >>> 'abc'.ljust(3, '*')
    'abc'
    

    25.rjust方法

    作用:类似ljust 方法,本方法为右对齐
    原型:S.rjust(width[, fillchar]) -> str
    参数:同 center 方法
    返回值:新的字符串

    示例:

    >>> 'abc'.rjust(5, '*')
    '**abc'
    >>> 'abc'.rjust(3, '*')
    'abc'
    

    26.zfill方法

    作用:效果同 rjust(width,'0')
    原型:S.zfill(width) -> str
    参数width 为新的字符串的总长度
    返回值:新的字符串

    >>> 'abc'.zfill(5)
    '00abc'
    >>> 'abc'.rjust(5, '0')
    '00abc'
    

    5,字符串格式化

    27.format方法

    作用:用于格式化字符串,用format 方法中的参数依次替代S 中的大括号{}
    原型:S.format(*args, **kwargs) -> str
    参数:任意参数列表
    返回值:返回格式化后的字符串

    示例:

    >>> '{} {} {}'.format('hello', 'python', 123)    # {} 中不写下标
    'hello python 123'
    >>> '{2} {0} {1}'.format('hello', 'python', 123) # {} 中写下标
    '123 hello python'							
    

    28.format_map方法

    作用:类似format 方法的作用,只是接受的参数类型不同,大括号{} 中必须是字典对象的
    原型:S.format_map(mapping) -> str
    参数:一个字典类型的对象
    返回值:返回格式化后的字符串

    示例:

    >>> '{a} {b}'.format_map({'a':1, 'b':2})
    '1 2'
    

    关于字典类型,将在后续章节详细介绍

    6,字符串截断

    29.lstrip方法

    作用:从左开始,截去字符串S 中的字符chars,直到第一个不是chars 的字符
    原型:S.lstrip([chars]) -> str
    参数chars 可以是任意长度的字符串,每个包含在chars 中的字符,都会被截去。可省,默认为空格
    返回值:新的字符串

    示例:

    >>> 'abcabcabc'.lstrip('b')
    'abcabcabc'
    >>> 'abcabcabc'.lstrip('a')
    'bcabcabc'
    >>> 'abcabcabc'.lstrip('ab')
    'cabcabc'
    >>> 'abcabcabc'.lstrip('abc')
    ''
    

    30.rstrip方法

    作用:从右开始,截去字符串S 中的字符chars,直到第一个不是chars 的字符
    原型:S.rstrip([chars]) -> str
    参数:同 lstrip
    返回值:新的字符串

    示例:

    >>> 'abcabcabc'.rstrip('b')
    'abcabcabc'
    >>> 'abcabcabc'.rstrip('c')
    'abcabcab'
    >>> 'abcabcabc'.rstrip('bc')
    'abcabca'
    >>> 'abcabcabc'.rstrip('abc')
    ''
    

    31.strip方法

    作用:先执行lstrip 再执行 rstrip
    原型:S.strip([chars]) -> str
    参数:同 lstrip
    返回值:新的字符串

    示例:

    >>> 'abcabcabc'.strip('b')
    'abcabcabc'
    >>> 'abcabcabc'.strip('ba')
    'cabcabc'
    >>> 'abcabcabc'.strip('bac')
    ''
    

    7,字符串分割

    32.strip方法

    作用:从左到右,以字符串sep 来分割字符串S,最多分割maxsplit
    原型:S.split(sep=None, maxsplit=-1) -> list of strings
    参数 sepsep 可以是任意长度的字符串,默认为任意空白符
    参数 maxsplit:分割的最大次数,默认不限次数
    返回值:字符串列表

    示例:

    >>> 'a3bc-abc-ab ef	hh
    mn'.split()
    ['a3bc-abc-ab', 'ef', 'hh', 'mn'] 
    >>> 'a3bc-abc-ab ef	hh
    mn'.split(maxsplit=2)
    ['a3bc-abc-ab', 'ef', 'hh
    mn']
    >>> 'a3bc-abc-ab ef	hh
    mn'.split('a')
    ['', '3bc-', 'bc-', 'b ef	hh
    mn']
    >>> 'a3bc-abc-ab ef	hh
    mn'.split('bc')
    ['a3', '-a', '-ab ef	hh
    mn']
    

    33.rsplit方法

    作用:从右到左,以字符串sep 来分割字符串S,最多分割maxsplit
    原型:S.rsplit(sep=None, maxsplit=-1) -> list of strings
    参数:同strip 方法
    返回值:字符串列表

    示例:

    >>> 'a3bc-abc-ab ef	hh
    mn'.rsplit()
    ['a3bc-abc-ab', 'ef', 'hh', 'mn']
    >>> 'a3bc-abc-ab ef	hh
    mn'.rsplit(maxsplit=2)
    ['a3bc-abc-ab ef', 'hh', 'mn']
    >>> 'a3bc-abc-ab ef	hh
    mn'.rsplit('bc')
    ['a3', '-a', '-ab ef	hh
    mn']
    

    34.splitlines方法

    作用:对字符串S 进行行分割,换行符为
    原型:S.splitlines([keepends]) -> list of strings
    参数keependsTrueFalse,为True 时保留换行符,为False 时不保留换行符,默认为False
    返回值:字符串列表

    示例:

    >>> 'a3bc-abc-ab ef	hh
    mn'.splitlines()
    ['a3bc-abc-ab ef	hh', 'mn'] 
    >>> 'a3bc-abc-ab ef	hh
    mn'.splitlines(True)
    ['a3bc-abc-ab ef	hh
    ', 'mn']
    

    8,其它方法

    35.encode方法

    作用:对Sencoding指定的编码格式进行编码
    原型:S.encode(encoding='utf-8', errors='strict') -> bytes
    参数 encoding:以什么编码格式进行编码,默认是utf-8
    参数 errors:发生错误时的处理方式,默认为strict,其它可选值有ignorereplacexmlcharrefreplace
    返回值S 的字节形式值

    示例:

    >>> s = '中国'
    >>> s.encode('utf8')
    b'xe4xb8xadxe5x9bxbd'
    

    36.join方法

    作用:用于连接迭代器iterable 中的所有元素,分隔符为S
    原型:S.join(iterable) -> str
    参数:可迭代类型数据
    返回值:新的字符串

    示例:

    >>> ','.join('abc')
    'a,b,c' 
    >>> '|'.join('abc')
    'a|b|c'
    

    关于可迭代类型,将在后续章节详细介绍,这里只需要知道字符串就是一种可迭代类型

    37.startswith方法

    作用:判断字符串S[start:end] 是否以子串prefix 开头
    原型:S.startswith(prefix[, start[, end]]) -> bool
    参数 prefix:子字符串
    参数 start:开始位置,可省,默认为 0
    参数 end:结束位置,可省,默认为 len(S)
    返回值TrueFalse

    示例:

    >>> 'abcabcabc'.startswith('abc')
    True
    >>> 'abcabcabc'.startswith('bc')
    False
    

    38.endswith方法

    作用:判断字符串S[start:end] 是否以子串suffix 结尾
    原型:S.endswith(suffix[, start[, end]]) -> bool
    参数 suffix:子字符串
    参数 start:开始位置,可省,默认为 0
    参数 end:结束位置,可省,默认为 len(S)
    返回值TrueFalse

    示例:

    >>> 'abcabcabc'.endswith('bc')
    True
    >>> 'abcabcabc'.endswith('bcd')
    False
    

    39.replace方法

    作用:从左到右,将S 中的 old 转换成 new,最多转换 count
    原型:S.replace(old, new[, count]) -> str
    参数 old:源字符串,可以是任意长度
    参数 new:目标字符串,可以是任意长度
    参数 count:最多转换 count
    返回值:新的字符串

    示例:

    >>> 'abcabcabc'.replace('a', '1')
    '1bc1bc1bc'
    >>> 'abcabcabc'.replace('a', '111')
    '111bc111bc111bc'
    >>> 'abcabcabc'.replace('ab', '1')
    '1c1c1c'
    >>> 'abcabcabc'.replace('a', '1', 2)
    '1bc1bcabc'
    

    40.expandtabs方法

    作用:将S 中的tab 转为空格,tab
    原型:S.expandtabs(tabsize=8) -> str
    参数 tabsize:一个tab 转为空格的个数与tab 之前的子串长度之和为tabsize,默认为 8
    返回值:新的字符串

    示例:

    >>> 'a	bca	bca	bc'.expandtabs(4)
    'a   bca bca bc'
    >>> 'a	bca	bca	bc'.expandtabs(4).replace(' ', '-')
    'a---bca-bca-bc'	         # 为了方便显示空格的个数,将空格替换为横线
    >>> 'a	bca	bca	bc'.expandtabs(8)
    'a       bca     bca     bc'
    >>> 'a	bca	bca	bc'.expandtabs(8).replace(' ', '-')
    'a-------bca-----bca-----bc' # 为了方便显示空格的个数,将空格替换为横线
    

    通过下图可以更好的理解expandtabs()的含义:

    在这里插入图片描述

    41.maketrans方法

    作用:用于创建一个字符映射,常与 translate 方法配合使用
    原型:maketrans(x, y=None, z=None, /)
    参数:当只有1 个参数时,必须是一个字典。当有2 个参数时,是两个字符串,且这两个字符串的长度必须相同
    返回值:一个字典类型的数据

    示例:

    >>> str.maketrans({'a':'1', 'b':'2', 'c':'3', 'd':'好'})
    {97: '1', 98: '2', 99: '3', 100: '好'}
    >>> str.maketrans('abcd', '123好')
    {97: 49, 98: 50, 99: 51, 100: 22909}
    

    42.translate方法

    作用:将字符串S 使用table 进行替换
    原型:S.translate(table) -> str
    参数:是一个字典类型
    返回值:新的字符串

    示例:

    >>> x = str.maketrans('abc', '123')
    >>> x
    {97: '1', 98: '2', 99: '3', 100: '好'}
    >>> 'axxxbxxxcxxx'.translate(x) # a->1 b->2 c->3
    '1xxx2xxx3xxx'
    

    43.partition方法

    作用:从左边开始,将字符串Ssep 进行分隔,只会进行一次分隔
    原型:S.partition(sep) -> (head, sep, tail)
    参数sep 可以是任意长度的字符串
    返回值:返回一个三元组(head, sep, tail),head 是分隔后的前半部分,tail 是后半部分,sep 是分隔符

    示例:

    >>> 'abcabcabc'.partition('c')
    ('ab', 'c', 'abcabc')
    >>> 'abcabcabc'.partition('bc')
    ('a', 'bc', 'abcabc')
    >>> 'abcabcabc'.partition('abc')
    ('', 'abc', 'abcabc')
    

    44.rpartition方法

    作用:从右边开始,将字符串Ssep 进行分隔,只会进行一次分隔
    原型:S.rpartition(sep) -> (head, sep, tail)
    参数:同 partition 方法
    返回值:同 partition 方法

    示例:

    >>> 'abcabcabc'.rpartition('c')
    ('abcabcab', 'c', '')
    >>> 'abcabcabc'.rpartition('bc')
    ('abcabca', 'bc', '')
    >>> 'abcabcabc'.rpartition('abc')
    ('abcabc', 'abc', '')
    

    (完。)


    推荐阅读:

    Python 简明教程 --- 3,Python 基础概念

    Python 简明教程 --- 4,Python 变量与基本数据类型

    Python 简明教程 --- 5,Python 表达式与运算符

    Python 简明教程 --- 6,Python 控制流

    [Python 简明教程 --- 7,Python 字符串]https://www.cnblogs.com/codeshell/p/12958246.html)


    欢迎关注作者公众号,获取更多技术干货。

    码农充电站pro

  • 相关阅读:
    2020年7月15日Java学习日记
    2020年7月14日Java学习日记
    2020年7月13日Java学习日记
    2020年7月12日Java学习日记
    2020年7月11日Java学习日记
    2020年7月10日Java学习日记
    2020年7月9日Java学习日记
    2020年7月8日Java学习日记
    链式栈(Chain stack)
    Codeforces-1375-D-Replace by MEX
  • 原文地址:https://www.cnblogs.com/codeshell/p/12958255.html
Copyright © 2011-2022 走看看