本文介绍: 力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。返回 6 ,输入数组的前 6 个字符应该是:[“a“,”2″,”b“,”2″,”c“,”3″]”aa” 被 “a2″ 替代。”bb” 被 “b2″ 替代。”ccc” 被 “c3″ 替代。你必须设计并实现一个只使用常量额外空间的算法来解决此问题。// 然后 用 j 来统计与前面的比较是否相同,然后循环。// 用一个count 来进行不断的清空。需要注意的是,如果组长度为。,返回该数组的新长度。
null备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/string–compression/description/
从一个空字符串 s
开始。对于 chars
中的每组 连续重复字符 :
压缩后得到的字符串 s
不应该直接返回 ,需要转储到字符数组 chars
中。需要注意的是,如果组长度为 10
或 10
以上,则在 chars
数组中会被拆分为多个字符。
示例 1:
输入:chars = ["a","a","b","b","c","c","c"] 输出:返回 6 ,输入数组的前 6 个字符应该是:["a","2","b","2","c","3"] 解释:"aa" 被 "a2" 替代。"bb" 被 "b2" 替代。"ccc" 被 "c3" 替代。
// 重点思路:
#include "iostream"
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
int compress(vector<char>& chars) {
for(int i = 0 , j = 0; i < chars.size() && j < chars.size();){
int count = 0;
while(j < chars.size() && chars[j] == chars[i]){
j++;
count++;
}
if(count > 1) {
ans += chars[i] + to_string(count);
i = j;
}
else {
ans += chars[i];
i++;
}
}
for(int i = 0 ; i < ans.size() ; i++){
chars[i] = ans[i];
}
return ans.size();
}
private:
string ans;
};
int main() {
vector<char> chars = {'a','a','b','b','c','c','c'};
Solution s2;
cout<<s2.compress(chars)<<endl;
return 0;
}
原文地址:https://blog.csdn.net/IRON_MAN_LEVEL1/article/details/134693255
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_9819.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。