【发布时间】:2022-11-18 17:25:57
【问题描述】:
我想将一个字符串转换为一个哈希表,其键是字符串中的字符,值是该字符在字符串中的索引列表。有什么优雅的方法可以做到这一点吗?
例如:
String: "abcaad"
Hash table: { a: [0 3 4] , b: [1] , c: [2] , d: [5] }
我尝试用 hash-set! 编写一个并从末尾迭代字符串以避免 append 比在开始时插入慢。但我希望会有一些更优雅的方式(如果我能得到一个向量而不是每个哈希值的列表更好):
(define (s->hash s)
(define h (make-hash))
(for ([c (in-string s (sub1 (string-length s)) -1 -1)]
[i (in-range (sub1 (string-length s)) -1 -1)])
(hash-set! h c (cons i (hash-ref h c empty))))
h)
【问题讨论】: