1881. 飞机座位

1881. 飞机座位

中文English

您的任务是为四口之家尽可能多的分配座位。一个四口之家必须占领一排当中连续的四个座位。过道上的座位(例如2C和2D)不被认为是彼此相邻的。一家人被过道分开是可以的,但在这种情况下必须每一边坐两个。显然,座位不可以分配给一个以上的家庭。

编写一个函数

class Solution {public int solution(int N,String S};

函数中N表示有N排座位,S表示已经提供出去的座位,函数返回剩下的座位能坐四口之家的最大值。例如, N = 2,S = '1A 2F 1C’,你的函数应该返回2.下图给出了做法。

当N = 1, S = ""(空字符串),你的函数应该返回2,因为我们最多可以提供2个四口之家的座位在一排空座位中,例如下图。

样例

输入: N = 2,S = "1A 2F 1C"
输出: 2
输入: N = 1,S = ""
输出: 2

注意事项

  • N是在[1,50]内的整数;
  • 字符串S由有效的座位名称组成,并用单个空格分隔;
  • 每个座位号最多在字符串S中出现一次。
 
 
输入测试数据 (每行一个参数)如何理解测试数据?

 

class Solution:
    """
    @param N:  the number of rows
    @param S: a list of reserved seats
    @return: nothing
    """
    '''
    大致思路:
    1. 总共只有3种可能,BCDE,DEFG,FGHI,只要占了,则可以写入S,判断下去即可,最终返回c
    '''
    def solution(self, N, S):
        c = 0
        d = S.split(' ')
        for i in range(1,N+1):
            if  '%sB'%str(i) not in d and '%sC'%str(i) not in d and '%sD'%str(i) not in d and '%sE'%str(i) not in d:
                c += 1
                d.append(str(i) + 'E')
            
            if '%sD'%str(i) not in d and '%sE'%str(i) not in d and '%sF'%str(i) not in d and '%sG'%str(i) not in d:
                c += 1
                d.append(str(i) + 'G')
            if '%sF'%str(i) not in d and '%sG'%str(i) not in d and '%sH'%str(i) not in d and '%sI'%str(i) not in d:
                c += 1
        return c

 

posted @ 2020-05-03 02:56  风不再来  阅读(459)  评论(0编辑  收藏  举报