119. tokenizerを実装する

少し工夫が必要  - accepted / - tried

Given a character sequence and a defined document unit, tokenization is the task of chopping it up into pieces, called tokens , perhaps at the same time throwing away certain characters, such as punctuation. (ref)

文字列処理の問題では、多くの場合、特定なルールで文字列を解析することが求められる。

例えば、以下の計算式の結果を返すよう:

 1 * (20 -   300      ) 

計算が始まる前、まずスペースを無視し、各「キーワード(token)」を取得する必要がある。以下のように:

'1','*', '(', '20', '-', '300', ')'

これから計算が実装しやすくなる。

四則計算のtokenize()を実装してください

const tokens = tokenize(' 1 * (20 -   300      ) ')


while (true) {
  let token = tokens.next()
  if (token.done) {
    break
  }
  console.log(token.value)
}

or you can use for ... of

for (let token of tokens) {
    console.log(token)   
}

tokenizerの実装が難しくはないから、面接を受けるときに、面接官に交渉し、tokenizerの実装は最後にするのはおすすめです。大事な時間を大事なロジックに使いましょう。

入力

  1. 文字列は整数(>=0)、+、-*/() とスペースしかない。スペースは無視するべき。

2.実装した関数はGeneratorを返してください。

時間と空間複雑性はどう?

(1)
(37)