我试图让所有"移动"分区大小为k的字符串.基本上,我想沿着字符串移动一个大小为k的窗口并获得该k字.
这是一个例子,
k:3
输入:ABDEFGH
输出:ABD,EFG,BDE,FGH,DEF
我的想法是沿着输入走,放下一个头和分区,然后从先前(现在无头)序列再次掉头,但我不确定如何做到这一点...而且,也许有更好的方法这样做?以下是我的想法.
(#(partition k input) (collection of s where head was consecutively dropped))
Run Code Online (Sandbox Code Playgroud)
Clojure中的字符串可以视为字符序列,因此您可以直接对它们进行分区.要获取一系列重叠分区,请使用接受大小和步骤的版本:
user> (partition 3 1 "abcdef")
((\a \b \c) (\b \c \d) (\c \d \e) (\d \e \f))
Run Code Online (Sandbox Code Playgroud)
要将字符序列放回字符串,只需应用于str它:
user> (apply str '(\a \b \c))
"abc"
Run Code Online (Sandbox Code Playgroud)
把它们放在一起:
user> (map (partial apply str) (partition 3 1 "abcdef"))
("abc" "bcd" "cde" "def")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |