LeetCode 541. 反转字符串 II(Python)

给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

思路:切片 + 栈

切片是根据题目需求,将偶数位置的切片进行反转,反转用到了栈先进后出的特点,将每个小字符串按照字符依次放入栈中之后再依次取出

class Solution(object):
    def reverseStr(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: str
        """
        slice_list = list()
        res_list = list()
        index = 0
        while index < len(s):
            slice_list.append(s[index:index+k])
            index += k
        # 将偶数切片索引的翻转
        for i in range(len(slice_list)):
            if i % 2 == 1:
                res_list.append(slice_list[i])
            else:
                stack = [j for j in slice_list[i]]  # 利用栈来翻转
                reverse = ""
                for k in range(len(stack)):
                    reverse += stack.pop()
                res_list.append(reverse)
        
        return ("".join(res_list))
                
                    
                    
                    
                    
发布了88 篇原创文章 · 获赞 98 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/HNU_Csee_wjw/article/details/102553844