前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法—字符串压缩

算法—字符串压缩

作者头像
OBKoro1
发布2020-10-27 11:56:05
2K0
发布2020-10-27 11:56:05
举报
文章被收录于专栏:OBKoro1的前端分享

字符串压缩

难度:简单

描述:

设计一种方法,通过给重复字符计数来进行基本的字符串压缩。

例如,字符串 aabcccccaaa 可压缩为 a2b1c5a3 。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。

可以假设字符串仅包括 a-z 的字母。

样例:

str=aabcccccaaa 返回 a2b1c5a3

str=aabbcc 返回 aabbcc

str=aaaa 返回 a4

思路分析:

解题思路:取出字符串,判断重复停止,添加到新字符串中。

注:需判断压缩后的字符串长度和原始字符串长度。

代码模板:

代码语言:javascript
复制
const compress = function(originalString) {};

想一想再看答案

想一想再看答案

想一想再看答案

代码:

代码语言:javascript
复制
// 取出字符串,判断重复停止,添加到新字符串中
const compress = function(originalString) {
  if (originalString.length <= 1) return originalString; // 直接返回源字符串
  let newStr = '';
  let s = originalString.charAt(0);
  let num = 1; // 跳过第一个
  let total = originalString.length;
  for (let i = 1; i < total; i++) {
    let nowS = originalString.charAt(i);
    if (nowS === s) {
      num = num + 1; // 增加数量
      if (i + 1 === total) {
        newStr += `${s}${num}`; // 遍历结束时,拼接最后的字符串
      }
    } else {
      newStr += `${s}${num}`; // 拼接字符串
      num = 1; // 重置为1
      s = nowS; // 转为下一个字符s
    }
  }
  // 生成的字符串长度大于等于源字符串 返回源字符串 否则返回生成的字符串
  if (newStr.length >= originalString.length) {
    return originalString;
  } else {
    return newStr;
  }
};
console.log(
  '输出:',
  compress('aabcccccaaa'), // a2b1c5a3
  compress('aabbcc'), // aabbcc
  compress('aaaa'), // a4
  compress('a'), // a
  compress('') // ''
);

鼓励我一下:

觉得还不错的话,给我的项目点个star吧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OBKoro1前端进阶积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串压缩
    • 难度:简单
      • 描述:
        • 样例:
          • 思路分析:
            • 代码模板:
              • 想一想再看答案
                • 想一想再看答案
                  • 想一想再看答案
                    • 代码:
                      • 鼓励我一下:
                      相关产品与服务
                      文件存储
                      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档