119. 创建一个tokenizer
分享给更多人
中等难度 -通过 / -执行
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 )
在进行具体的计算之前,我们首先需要取得各个 "关键词"(tokens) 并且忽略空格,比如:
'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,这样你可以留下更多时间处理重要的逻辑。
输入
- 输入的字符串只包括非负整数字符和
+
、-
、*
、/
、(
、)
和空格,空格需要忽略。 - 你的实现需要返回 Generator。