壓縮字串《演算法很美》
壓縮字串
思路: 在字元重複出現的時候,例如"aabcccccaaa"
變成"a2b1c5a3"
就好,charAt就相當於頭字元,last是尾字元
具體思路:
- 設定int count = 0; // 記錄前一個字元的重複次數
- 設定char last = 0;// 上一個字元
- 建立一個
StringBuilder sb = new StringBuilder();
- 遍歷字串src
- 當i=0的時候,將第一個字元,
char charAt = src.charAt(0);
賦值給charAt,並且壓進sb中,sb.append(charAt);
,同時count++。last = charAt;
將字元賦值給last - 當i=1的時候,
char charAt = src.charAt(1);
然後再判斷是否和上一個字元一樣if (last == charAt)
如果是,則count++,如果不是,則壓進sb中sb.append(count).append(charAt);
且重置count=1. - 重複上述。。。。。。
- if (count >= 1) {
sb.append(count);
}
考慮最後一個字元的重複次數
/*
* 利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。
* 比如,字串"aabcccccaaa"經歷壓縮會變成"a2b1c5a3"。
* 若壓縮後的字串沒有變短,則返回原先的字串。
* 給定一個string iniString為待壓縮的串(長度小於等於10000).
* 保證串內字元均由大小寫英文字母組成,返回一個string,為所求的壓縮後或未變化的串。
* 測試樣例
* "aabcccccaaa"
* 返回:"a2b1c5a3"
* */
public class 壓縮字串 {
public static void main(String[] args){
String res = zipString("abc");
System.out.println(res);
}
public 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; // 重置為1
}
}
last = charAt;
}
//考慮最後一個字元的重複次數
if (count >= 1) {
sb.append(count);
}
//比較新字串和原字串
if (sb.length() >= src.length()) {
return src;
}
return sb.toString();
}
}
相關文章
- 藍橋杯 演算法提高 字串壓縮演算法字串
- 字串匹配之KMP《演算法很美》字串匹配KMP演算法
- PAT-B 1078 字串壓縮與解壓【字串】字串
- 替換字串中的空格《演算法很美》字串演算法
- 字串壓縮(一)之ZSTD字串
- 8-字串的壓縮儲存字串
- 字串壓縮(二)之LZ4字串
- 壓縮演算法一覽演算法
- 判斷兩字串的字符集是否相同《演算法很美》字串演算法
- Ceph Reef(18.2.X)之壓縮演算法和壓縮模式演算法模式
- 第五章 字串專題 ---------------- 5.5 題解:壓縮字串字串
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- 【leetcode 簡單】 第一百零六題 壓縮字串LeetCode字串
- PAT1078字串壓縮與解壓(java實現)字串Java
- 逆序對《演算法很美》演算法
- java實現字元壓縮演算法Java字元演算法
- 常見壓縮演算法總結演算法
- 模型壓縮-剪枝演算法詳解模型演算法
- 檔案壓縮和解壓縮
- Python實現壓縮和解壓縮Python
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- JS壓縮方法及批量壓縮JS
- MSZIP 演算法是一種壓縮演算法,用於在 Microsoft Windows Installer (MSI) 檔案中壓縮和儲存檔案。它是一種基於 Lempel-Ziv 演算法(LZ77)的演算法,旨在提供高效的檔案壓縮和解壓縮。演算法ROSWindows
- Linux tar分卷壓縮與解壓縮Linux
- Linux壓縮解壓Linux
- CentOS 壓縮解壓CentOS
- 一文讀懂影象壓縮演算法演算法
- 20.1 OpenSSL 字元BASE64壓縮演算法字元演算法
- CNN 模型壓縮與加速演算法綜述CNN模型演算法
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux中檔案的壓縮和解壓縮Linux
- 儲存空間緊張?來看 TDengine TSZ 壓縮演算法如何顯著提升壓縮率演算法
- 打包/壓縮
- Gzipped 壓縮
- linuxtar解壓和壓縮Linux
- linux分卷壓縮解壓Linux
- Flutter實現Luban圖片壓縮庫演算法Flutter演算法