[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已经加入了这一检查.

浙公网安备 33010602011771号