コート1221号.

1629 ワード



この問題はどのように解決したのか.
まずresult(戻る最終結果)の左、右の3つの変数に設定します.
だから「L」が出ると左側が増えますR'が出てきたらrightを増やします.
この問題を解決するアルゴリズムは,同じ値を2つ増やし,左,右を0にし,結果を1に増やす.
私の答え:
class Solution:
def balancedStringSplit(self, s: str) -> int    left = 0
    right = 0 
    result = 0 
    
    for i in s:
        if i == 'L':
            left += 1
            if right == left:
                left = 0
                right = 0
                result += 1
        else:       
            right += 1
            if left == right:
                left = 0
                right = 0
                result += 1
                    
    return result
他の人の回答:
from itertools import accumulate as acc
class Solution:
    def balancedStringSplit(self, s: str) -> int:
        return list(acc(1 if c == 'L' else -1 for c in s)).count(0)
class Solution:
    def balancedStringSplit(self, s: str) -> int:
        res = cnt = 0         
        for c in s:
            cnt += c == 'L'
            cnt -= c == 'R'
            res += cnt == 0
        return res  
def balancedStringSplit(self, s: str) -> int:
    res = cnt = 0         
    for c in s:
        cnt += 1 if c == 'L' else -1            
        if cnt == 0:
            res += 1
    return res  
本当に他の人とずいぶん違います.