第五章 字串專題 ---------------- 5.5 題解:壓縮字串
題目:
壓縮字串。實現一個演算法,利用字元重複出現的次數,實現基本的字串壓縮功能。比如,測試樣例"aabcccccaaa" 返回:"a2b1c5a3"。若壓縮後的字串沒有變短,則返回原先的字串。
程式碼:
public class Zipper {
public static void main(String[] args) {
String res = zipString("aabcccccaaa");
System.out.println(res);
}
static String zipString(String src){
int count = 0; // 記錄前一個字元的重複次數
char last = 0; // 上一個字元
StringBuilder sb = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
char charAt = src.charAt(i);
if (sb.length()==0) { // 處理第一個字元
sb.append(charAt);
count++;
}else {
if (last==charAt){ // 和上一個字元相同
count++;
}else { // 和上一個字元不同
sb.append(count).append(charAt);
count = 1;
}
}
last = charAt;
}
// 考慮最後一個字元的重複次數
if (count>=1) {
sb.append(count);
}
// 比較新字串和原字串
if (sb.length()>= src.length()) {
System.out.println("字串沒有變短:"+sb.toString());
return "原字串:"+src;
}
return sb.toString();
}
}
C++程式程式碼:
#include<iostream>
#include<algorithm>
using namespace std;
string zipString(string str)
{
int count=1;
int len=str.length();
char c=str[0];
string ans;
for(int i=1;i<len;i++)
{
char temp=str[i];
if(temp==str[i-1])
{
count++;
}
else
{
ans+=str[i-1];
ans+=char(count+'0');
count=1;
}
}
if(count>0)
{
ans+=str[len-1];
ans+=char(count+'0');
}
else
{
ans+=str[len-1];
ans+='1';
}
return ans;
}
int main()
{
string str="aacccd";
cout<<zipString(str);
return 0;
}
結果:
相關文章
- 第五章 字串專題 ---------------- 5.2 題解:巧妙翻轉字串字串
- 第五章 字串專題 ---------------- 5.7 題解:旋轉詞字串
- 第五章 字串專題 ---------------- 5.8 題解:將字串中按單詞翻轉字串
- 第五章 字串專題 ---------------- 5.1 題解:判斷字串有無重複字元字串字元
- 第五章 字串專題 ---------------- 5.12 字串匹配之PabinKarp字串匹配
- 第五章 字串專題 ---------------- 5.11 題解:最短摘要的生成字串
- 第五章 字串專題 ---------------- 5.6 解題:判斷兩字串的字符集是否相同字串
- PAT-B 1078 字串壓縮與解壓【字串】字串
- 第五章 字串專題 ---------------- 5.10 題解:神奇的迴文串字串
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- 【leetcode 簡單】 第一百零六題 壓縮字串LeetCode字串
- 第五章 字串專題 ---------------- 5.9 題解:去掉字串中連線出現的k次的0字串
- 第五章 字串專題 ---------------- 5.4 實踐:替換字串中的空格字串
- 字串專題字串
- 專題:字串字串
- 第五章 字串專題 ---------------- 字串匹配(三)----字尾陣列演算法字串匹配陣列演算法
- 字串壓縮(一)之ZSTD字串
- 【專題訓練】字串字串
- 第五章 字串專題 ---------------- 5.3 走出思維誤區:變形詞問題字串
- 壓縮字串《演算法很美》字串演算法
- 提高組字串專題1字串
- PAT1078字串壓縮與解壓(java實現)字串Java
- 字串壓縮(二)之LZ4字串
- 8-字串的壓縮儲存字串
- P3735 字串 題解字串
- 數字與字串5.5字串
- [題解]P1641 生成字串字串
- 藍橋杯 演算法提高 字串壓縮演算法字串
- C# 關於壓縮、加密、解壓問題C#加密
- 字串-面試題字串面試題
- 分割字串問題字串
- [JLOI2015] 有意義的字串 題解字串
- 字串做題筆記字串筆記
- 字串相關題幹:字串
- 字串匹配模式問題字串匹配模式
- 解決split無法得到空字串問題字串
- LeetCode題解(1668):最大重複子字串(Python)LeetCode字串Python
- 字串混淆常見問題字串