# Online Assesement 2021-06-14 (Apple)
###### tags: `leetcode` `apple` `assesement`
* 兩題題目,一個小時,這兩題我都沒有寫過,但兩題都是 easy
## :memo: 第一題

## :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: 第二題

## :memo: 題意
* :medal: 最多可以分多少個平衡 string。(相同數量的R和L)
## :memo: My solution
* :medal: **思考一**: 用一個 forloop 遍歷字串,然後去計算現在有多少個R和L只要數量一樣,ans += 1,然後R和L的計數歸零,重頭開始算。
```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 分鐘。第一題應該要花更少時間,因為第二題是秒殺題....
