描述
设计一种方法,通过给重复字符计数来进行基本的字符串压缩。
例如,字符串 aabcccccaaa
可压缩为 a2b1c5a3
。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。
可以假设字符串仅包括 a-z
的字母。
样例
- 样例 1:
输入:str = "aabcccccaaa"
输出:"a2b1c5a3"
- 样例 2:
输入:str = "aabbcc"
输出:"aabbcc"
解析
const compress = function (originalString) {
var k=1; res=[]; result=[]
arr = originalString.split('')
for(i=0; i<arr.length; i++){
if(arr[i] == arr[i+1]) k++
if(arr[i] != arr[i+1]){
res.push(arr[i],k)
k = 1
}
}
for(j=0; j<res.length; j++){
if(typeof res[j] == 'number'){
let key = res[j]
while(key>0){
result.push(res[j-1])
key--
}
}
}
result = result.join('')
arr = arr.join('')
res = res.join('')
if(result == arr && arr.length<=res.length) return arr
else return res
}