问题

说明

解决(python)

解法 (racket 5.2.1)

  1. ; 定义一个函数 filter-by-1st-char
  2. ; 输入一个字符 a-ch 和一个字符串 a-str
  3. ; 如果 a-ch a-str 的第一个字符相同,
  4. ; 则以列表方式输出 a-str, 否则输出空列表 '()
  5. (define (filter-by-1st-char a-ch a-str)
  6. (list a-word) '()))
  7. ; 定义一个函数 sort-words-by-char-list
  8. ; 它接受以字符串形式输入的一个字符序列 char-list,
  9. ; 和以字符串列表形式输入的一个字符串序列 word-list
  10. ; 输出一个列表,其所有列表项即 word-list 中的所有字符串
  11. ; 并且将根据每个字符串的首字母,依照 char-list 所提供的顺序排序
  12. ; 而并非按一般英文词典的 a-z 顺序排序
  13. (define (sort-words-by-char-list char-list word-list)
  14. (let
  15. (for ([ch char-list])
  16. (for ([wd word-list])
  17. (set! sorted-word-list
  18. (append sorted-word-list ; 把符合条件的单词放进结果列表
  19. (filter-by-1st-char ch wd)))))
  20. sorted-word-list))
  21. ; 函数调用,正常运行时,应该输出 (dear dog eye bed)
  22. (sort-words-by-char-list "dgecfboa" '("dear" "dog" "eye" "bed")))