题目描述:
小明正在规划一个大型数据中心机房,为了使得机柜上的机器都能正常满负荷工作,需要确保在每个机柜边上至少要有一个电箱。 为了简化题目,假设这个机房是一整排,M表示机柜,I表示间隔,请你返回这整排机柜,至少需要多少个电箱。 如果无解请返回 -1 。
输入描述:
cabinets = "MIIM"
其中M表示机柜,I表示间隔
输出描述:
2
表示至少需要2个电箱
补充说明:
1<= strlen(cabinets) <= 10000
其中 cabinets[i] = ‘M’ 或者 'I'
示例1
输入:
MIIM
输出:
2
示例2
输入:
MIM
输出:
1
示例3
输入:
M
输出:
-1
示例4
输入:
MMM
输出:
-1
示例5
输入:
I
输出:
0
解题思路:
无解一共四种情况(机房长度小于2,最左侧是MM,最右侧是MM,中间存在MMM)
每个机柜要一个电箱,而每有一个MIM结构,都可以少用一个电箱
(不知道有没有逻辑漏洞,可以打些示例检验一下)
jifang=input()
if len(jifang)==1:
print(-1)
elif jifang[0:2]=='MM' or jifang[-2:0]=='MM' or 'MMM' in jifang:
print(-1)
else:
count=jifang.count('M')-jifang.count('MIM')
print(count)