leetcode 443. String Compression
2024-08-26 02:50:37
下面反向遍历,还是正向好。
void left(vector<char>& v, bool p(int)) {
int max_index = v.size() - ; int del = -;
int rel = -;
while (del < max_index) {
while (p(v[del]) && del < max_index)
del++;
if (del >= max_index)
break;
if (rel < del)
rel = del;
while (!p(v[rel]) && rel <= max_index)
rel++;
if (rel > max_index)
break;
swap(v[del], v[rel]);
del++;
}
} int compress(vector<char>& chars) {
int size = chars.size();
int point = size - ;
int count = ;
for (int i = point; i >= ; i--) {
if (chars[i] == chars[i - ] && i > )
count++;
else if (count > ) {
for (int j = count - ; j > ; j--)
chars[i + j] = ;
string temp = to_string(count);
for (int j = ; j < temp.size(); j++)
chars[i + j + ] = temp[j];
count = ;
}
}
left(chars, [](int v) {return v != ;});
return count_if(chars.begin(), chars.end(), [](int v) {return v != ;});
}
其他答案:
int compress(vector<char>& chars) {
int lo=;
int cnt=;
for(int i=; i<chars.size(); i++){
cnt++;
if(i==chars.size()-||chars[i]!=chars[i+]){
chars[lo++]=chars[i];
if(cnt>){
string nums=to_string(cnt);
for(int i=; i<nums.length(); i++){
chars[lo++]=nums[i];
}
}
cnt=;
}
}
return lo;
}
最新文章
- JAVA 读写Excel
- IntelliJ IDEA使用(二):tomcat和jetty配置
- charles 抓取eclipse中的请求
- linux-------------linux的scp
- linux网络:常用命令(一)
- [BZOJ 3530][Sdoi 2014]数数
- asp.net 运行时,";未能映射路径";
- codeforces A. Dima and Continuous Line 解题报告
- Spreadsheet Tracking
- 问题:关于贴友一个用js传递value默认值的简单实现
- Java工具类:获取long型唯一ID
- XML 标记使用的特殊字符对应内置实体
- protobuf的反射机制
- Strusts2--课程笔记4
- 强大的桌面用 PDF 重排工具:K2pdfopt 简明教程
- solr6.5搭建以及使用经验
- MySQL索引的使用
- NFS的搭建及配置
- bash 文件名操作 常用方法
- 【Java基础】10、Java中throw和throws的区别