algorithm

696. Count Binary Substrings

식피두 2020. 8. 31. 02:12

https://leetcode.com/problems/count-binary-substrings/

 

Count Binary Substrings - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

idea: convert into [group_cnt, group_cnt, ... ]

 

290ms

import collections

class Solution:
    def countBinarySubstrings(self, s: str) -> int:
        
        buf = []
        is_zero = (s[0] == '0')
        cnt = 1
        for c in s[1:]:
            if is_zero:
                if c == '0':
                    cnt += 1
                else:
                    is_zero = False
                    buf.append(cnt)
                    cnt = 1
            else:
                if c == '1':
                    cnt += 1
                else:
                    is_zero = True
                    buf.append(cnt)
                    cnt = 1
        buf.append(cnt)
        
        ret = 0
        for i in range(1, len(buf)):
            left = buf[i-1]
            right = buf[i]
            equal = min(left, right)*2
            ret += int(equal/2)
        
        return ret

 

not use buffer

loop only 1

 

112ms

class Solution:
    def countBinarySubstrings(self, s: str) -> int:
        if not s:
            return 0
        else:
            x=0
            if(s[0]=='0'):
                flag='0'
            else:
                flag='1'
            c=0
            p=0
            for ele in s:
                if(ele==flag):
                    c+=1
                else:
                    x+=min(c,p)
                    p=c
                    c=1
                    flag=ele
                       
            x+=min(p,c)
            return x

100ms

class Solution:
    def countBinarySubstrings(self, s):
        s = list(map(len, s.replace('01', '0 1').replace('10', '1 0').split()))
        return sum(min(a, b) for a, b in zip(s, s[1:]))

'algorithm' 카테고리의 다른 글

676. Implement Magic Dictionary  (0) 2020.09.03
662. Maximum Width of Binary Tree  (0) 2020.08.31
654. Maximum Binary Tree  (0) 2020.08.31
599. Minimum Index Sum of Two Lists  (0) 2020.08.31
594. Longest Harmonious Subsequence  (0) 2020.08.31