博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode541. Reverse String II -- 按步长反转字符串
阅读量:6510 次
发布时间:2019-06-24

本文共 1117 字,大约阅读时间需要 3 分钟。

描述

Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

Example:

Input: s = "abcdefg", k = 2Output: "bacdfeg"

分析

这是一个字符串反转的问题,只是这里多了一个步长k的参数。如果前k个参数进行了反转,则后k个字符串不进行反转。因此我们可以设置一个标志位flag,如果为True,则对接下来k个字符串反转,否则保持原状。每k步对flag进行一次取反。

代码

class Solution:    def reverseStr(self, s, k):        """        :type s: str        :type k: int        :rtype: str        """        flag = False        temp = ""        for i in range(0, len(s), k):            flag = not flag            stop = i+k            if stop > len(s):                stop = len(s)            if flag:                temp += s[i:stop][::-1]            else:                temp += s[i:stop]        return temp

优化

看了下beats 100%的代码,以2k为步长,则每次迭代只需将反转之前的、反转的和反转之后的三部分加起来,即每2k个字符是一个子问题:

for idx in range(0, len(s), 2*k):    s = s[:idx] + s[idx:idx+k][::-1] + s[idx+k:]return s

转载地址:http://uzdfo.baihongyu.com/

你可能感兴趣的文章
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
HTML5:理解head
查看>>
java SpringUtil获取bean
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
Mysql
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
sys.check_constraints
查看>>
眠眠interview Question
查看>>
RPC-client异步收发核心细节?
查看>>