---
# System prepended metadata

title: Online Assesement 2021-06-14 (Apple)
tags: [assesement, leetcode, apple]

---

# Online Assesement 2021-06-14 (Apple)
###### tags: `leetcode` `apple` `assesement`

* 兩題題目，一個小時，這兩題我都沒有寫過，但兩題都是 easy
 
## :memo: 第一題

![](https://i.imgur.com/bHMy2Ex.png)


## :memo: 題意
* :medal: 我一開始有點誤會題目的意思所以浪費了一點時間，不然應該可以寫更快，題目給你一個 array 裡面有一個以上的單字。

* 他有舉例
```python=
input: ["bella", "label", "roller"]
# e 都有出現在各個單字
# l 在各個單字都至少出現兩次，所以答案要給兩個 ll
output: ["e", "l", "l"]
```


## :memo: My solution
* :medal: **思考一**: 一定是要遍歷所有 string 的每個 char。
* :medal: **思考二**: 要怎麼紀錄每個 char 在每個單字出現的次數，我原本想用 dicionary，但後來用了 array 的方式去紀錄，用 acsii編碼的方式去紀錄。


```python=
class Solution:
    def commonChars(self, words: List[str]) -> List[str]:
        
        temp = []
        
        for word in words:
            les = [0] * 26
            for char in word:
                les[ord(char) - ord('a')] += 1
            temp.append(les)
        
        # zip fuction => list(zip([1,2,3],[4,5,6])) = [(1, 4), (2, 5), (3, 6)]
        # zip 是去算將每個單字同個的字母出現的次數，集結成同一個 array
        # *temp => * 解包
        
        record_value = list(zip(*temp))
        
        ans = []
        
        for i,v in enumerate(record_value):
            # 然後用 min 值去表達 這個字在每個單字中至少出現幾次
            for _ in range(min(v)):
                ans.append(chr(ord('a') + i))
        
        return ans

```

## :memo: 檢討
* 這個題目要看清楚。

## :memo: BigO
* 時間複雜度: O(len(words)* m)，m = 每個字的長度。
* 空間複雜度: O(26* len(words))



## :memo: 第二題
![](https://i.imgur.com/rOaM3a9.png)


## :memo: 題意
* :medal: 最多可以分多少個平衡 string。(相同數量的Ｒ和Ｌ)


## :memo: My solution
* :medal: **思考一**: 用一個 forloop 遍歷字串，然後去計算現在有多少個Ｒ和Ｌ只要數量一樣，ans += 1，然後R和Ｌ的計數歸零，重頭開始算。

```python=
class Solution:
    def balancedStringSplit(self, s: str) -> int:
        
        lcount = 0
        rcount = 0
        ans = 0
        
        for v in s:
            if v == 'L':
                lcount += 1
            elif v == 'R':
                rcount += 1
            if lcount == rcount:
                lcount = 0
                rcount = 0
                ans += 1
        
        return ans
```

## :memo: BigO
* 時間複雜度: O(len(s))
* 空間複雜度: O(1)

## :memo: 真正操作的時間
* 總共 24 分鐘。第一題應該要花更少時間，因為第二題是秒殺題....

![](https://i.imgur.com/elzl5IO.png)



