# 04.04.2026 [2075. Decode the Slanted Ciphertext]
Decode row-encoded string #medium
04.04.2026
2075. Decode the Slanted Ciphertext medium blog post substack youtube
Join me on Telegram
Problem TLDR
Decode row-encoded string #medium
Intuition
Spaces at the end is not allowed for original string. That means we can simply decode with the end condition, then trim.
Approach
Kotlin: trimEnd
Complexity
Time complexity: $$O(n)$$
Space complexity: $$O(n)$$
Code
// 38ms
fun decodeCiphertext(e: String, r: Int) = buildString {
val skip = e.length/r + 1
for (j in 0..<skip) for (i in 0..<r)
if (j + i * skip < e.length) append(e[j + i * skip])
}.trimEnd()
// 8ms
pub fn decode_ciphertext(e: String, r: i32) -> String {
let (s, mut ans) = (e.len() / r as usize + 1, String::new());
for j in 0..s { for i in 0..r as usize {
if j + i * s < e.len() { ans.push(e.as_bytes()[j + i * s] as char) }}}
ans.trim_end().into()
}


