版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址。 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))
【相关题目】
【2】https://math.stackexchange.com/questions/2225097/bit-flipping-algorithm/2225113#2225113