程序員面試經典------ 基本字符串壓縮

題目描述

利用字符重複出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字符串沒有變短,則返回原先的字符串。

給定一個string iniString爲待壓縮的串(長度小於等於10000),保證串內字符均由大小寫英文字母組成,返回一個string,爲所求的壓縮後或未變化的串。

測試樣例
“aabcccccaaa”
返回:“a2b1c5a3”
“welcometonowcoderrrrr”
返回:“welcometonowcoderrrrr”

思路: 通過兩層循環,判斷前後是否是相同的字符,若相同則計數器+ 1, 不相同則跳出內層循環,並通過StringBuilder進行字符串拼接。

import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
      StringBuilder sb = new StringBuilder();
        
      //統計重複字母的個數
      int count = 1;
      char []a = iniString.toCharArray();
      
      for(int i = 0; i < a.length; i += count) {
      	//計數器復位
      	count = 1;
      	for(int j = i+1; j < a.length; j++) {
      		if(a[i] == a[j]) {
      			count++;
      		}else {
      			//不相同則跳出循環
      			break;
      		}
      	}
      	//拼接字符串中的值
      	sb.append(a[i]).append(count);
      }
      
      String newstr = sb.toString();
      //比較字符串的長度,確定返回值
      if (iniString.length() <= newstr.length()) {
      	return iniString;
      }else {
      	return newstr;
      }
  }     		
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章