字符串压缩接口,将重复字母进行压缩

先生不吃锅巴 2017-02-28 11:37:19
现有一串小写字母(a-z)组成的字符串,请编写一个字符串压缩接口,将字符串中连续出现的重复字母进行压缩,并输出,例如:
输入:“xxxyyyyz” 输出:"3x4yz"
...全文
416 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrStevens 2020-09-23
  • 打赏
  • 举报
回复
真牛鼻!佩服佩服,我遇到的 恰巧是解压缩过程
先生不吃锅巴 2017-03-02
  • 打赏
  • 举报
回复
厉害了我的哥!我何时才能有这种水平哦。
  • 打赏
  • 举报
回复
引用 3 楼 qq_37705234 的回复:
厉害啊!能用循环做吗?
循环可以,但比这样写麻烦。这是利用了正则表达式
先生不吃锅巴 2017-03-01
  • 打赏
  • 举报
回复
厉害啊!能用循环做吗?
  • 打赏
  • 举报
回复

//输入:“xxxyyyyz”  输出:"3x4yz"
function compressRepeatedStr(input){
	var result=input.replace(/([a-z])\1+/g,function(matchStr,group1){
		return matchStr.length+group1;
	});	
	return result;
}
先生不吃锅巴 2017-03-01
  • 打赏
  • 举报
回复
我想看看循环是怎样实现的?请指教!
天际的海浪 2017-03-01
  • 打赏
  • 举报
回复
引用 5 楼 qq_37705234 的回复:
我想看看循环是怎样实现的?请指教!

var str = "xxxyyyyz";
var newstr = "";
var n = 1;
for (var i = 0; i < str.length; i++) {
	if (str[i]!=str[i+1]) {
		newstr += (n>1?n:"") + str[i];
		n = 1;
	} else {
		n++;
	}
}
alert(newstr);

天际的海浪 2017-02-28
  • 打赏
  • 举报
回复
alert("xxxyyyyz".replace(/(.)\1+/g,function(s,a){return s.length+a;}));

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧