猫史档案馆


【急】【求助】在线求字符串压缩算法,就是那种比压缩毛巾还压缩的多的算法

用户:卑微OIer卑微OIer查看:3 回复:2 评论:3 创建时间:2023-01-24T20:54:31


如题,给定字符串)整一个算法

function encode(string){} // 返回字符串编码后的字符串或数组

function decode(string){} // 解码

编码后的字符串越短越好,压缩率越短越好,在线等急


回复

上一页1 页 / 共 1下一页
卑微OIer卑微OIer

喵d jshaman.com

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

function encode(text) {
    let zipedText = ''
    let lastTwo = ''
    let continuity = 1
    for (let index = 0; index < text.length; index += 2) {
        now = text[index] + text[index + 1]
        if (now === lastTwo && continuity < 99) {
            continuity++
        } else {
            if (continuity > 1) {
                zipedText += String(continuity).length === 2 ? String(continuity) : ' ' + String(continuity)
                continuity = 1
            }
            zipedText += now
        }
        lastTwo = now
    }
    if (continuity > 1) {
        zipedText += String(continuity).length === 2 ? String(continuity) : ' ' + String(continuity)
        continuity = 1
    }
    return zipedText
}

function decode(zipedText) {
    let text = ''
    let lastTwo = zipedText[0] + zipedText[1]
    for (let index = 0; index < zipedText.length; index += 2) {
        now = zipedText[index] + zipedText[index + 1]
        continuity = Number(now)
        for (let i = 0; i < continuity - 1; i++) {
            text += lastTwo
        }
        if (!(continuity > 1 && continuity < 100)) {
            text += now
        }
        lastTwo = now
    }
    return text
}

 

好久之前写的代码()()好像是只能压缩没有数字没有空格的()()就是直接压缩重复部分()要是不行就用b64试试()

点赞0


评论