有人可以向我解释我如何搜索句子中每个单词的出现次数,例如Common lisp中的“猫坐在垫子上”吗?
用户必须事先输入这一行文本,然后必须从中计算出现的事件。即使在哪里开始任何帮助都会有所帮助。
答案 0 :(得分:1)
split-by-one-space
(defun split-by-one-space (string)
"Returns a list of substrings of string
divided by ONE space each.
Note: Two consecutive spaces will be seen as
if there were an empty string between them."
(loop for i = 0 then (1+ j)
as j = (position #\Space string :start i)
collect (subseq string i j)
while j))
现在您可以使用带有equal
的哈希表作为测试,并且可能在列表上使用mapc
来获取密钥和频率哈希。然后你在哈希表中得到你想要的东西。
或者(和更慢)将使用(count (car lst) lst :test #'equal)
计算第一个元素,并使用(remove (car lst) lst :test #'equal)
处理列表的其余部分。当筛选后的列表为空时,您已完成。