[Leetcode-刷题笔记]左旋转字符串

刷题笔记

简单题,需要记录的一点是
使用取余操作精简部分代码

def reverseleftstring(s, n):
    res = ""
    for i in range(n, n+len(s)):
        res += s[(i%len(s))]
    return res

根据 Python 风格规范修改代码

def reverseleftstring(s, n):
    res = []
    for i in range(n, n+len(s)):
        res.append(s[(i % len(s))])
    return ''.join(res)

Tip

以下引用自 [Google] Python 风格规范
https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建不必要的临时对象,
并且导致二次方而不是线性的运行时间. 作为替代方案, 你可以将每个子串加入列表, 然后在循环结束
后用 .join 连接列表. (也可以将每个子串写入一个 cStringIO.StringIO 缓存中.)。

Yes: items = ['<table>']
     for last_name, first_name in employee_list:
         items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
     items.append('</table>')
     employee_table = ''.join(items)
No: employee_table = '<table>'
    for last_name, first_name in employee_list:
        employee_table += '<tr><td>%s, %s</td></tr>' % (last_name, first_name)
    employee_table += '</table>'

在同一个文件中, 保持使用字符串引号的一致性. 使用单引号’或者双引号”之一用以引用字符串, 并在同一文件中沿用.
在字符串内可以使用另外一种引号, 以避免在字符串中使用. PyLint已经加入了这一检查.

posted @ 2021-04-02 19:55  余漪  阅读(43)  评论(0)    收藏  举报