【算法编程题】Flipping signs

版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址。 https://blog.csdn.net/program_developer/article/details/87627819

Description:

Given a string made of '+' and '-' signs of length L ,the only allowed operation is to flip K consecutive signs at the same time.

Input:

String:length L,made of only ‘+’ and '-'

Integer:K

Output:

Integer:the minimum number of times needed to flip all signs to '+'. if not possible, output -1.

Constraints:

L >= K

K >= 2

解题方法:

(1)暴力解法

从字符串的首字符开始遍历,遇到“-”字符就进行K次替换,直到遍历完字符串。

class Solution:

    def minNumFlip(self, nums, K):
        '''
        :param nums: 字符串
        :param K: 每次翻转的个数
        :return:
        '''
        temp = "+"
        count = 0
        nums = list(nums) # Python中字符串是不可变类型,即无法直接修改字符串的某一位字符。需要把字符串转换成列表
        for i in range(len(nums)):
            if nums[i] != temp:
                for j in range(K):
                    nums[i + j] = temp # 重新赋值字符串的某一位字符
                count += 1

        return count

solution = Solution()
# test1
nums = "+++---+++---+++---+++"
print(solution.minNumFlip(nums, 4))

【相关题目】

【1】https://www.geeksforgeeks.org/min-flips-of-continuous-characters-to-make-all-characters-same-in-a-string/

【2】https://math.stackexchange.com/questions/2225097/bit-flipping-algorithm/2225113#2225113

【3】https://1o24bbs.com/t/topic/2007

猜你喜欢

转载自blog.csdn.net/program_developer/article/details/87627819