《Cracking the Coding Interview程式設計師面試金典》----基本字串壓縮

塵封的記憶0發表於2017-04-19
時間限制:3秒 空間限制:32768K 熱度指數:6143
本題知識點: 字串
 演算法知識視訊講解

題目描述

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

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

測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"

返回:"welcometonowcoderrrrr"


解題思路:咋一看,編寫這個方法似乎相當簡單,實則有點複雜。我們會迭代訪問字串,將字元拷貝至新的字串,並數出重複的字元。這裡要用到一個c++11特性的函式,to_string()函式,to_string()函式返回字串形式。其實功能就是將整型的數字,轉化為字串。

#include<iostream>
#include<string.h>
using namespace std;
string zipString(string iniString)
{
	string str;
	int i = 0, j = 0;
	while (i < iniString.length()){
		while (iniString[i] == iniString[j]) i++;
		str += iniString[j];
		str += to_string(i - j);
		j = i;
	}
	if (iniString.length() < str.length()) return iniString;
	else return str;
}
int main()
{
	string str;
	while (getline(cin, str))
	{
		cout << zipString(str) << endl;
	}
	return 0;
}

不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典

群) 歡迎你到來哦,看了博文給點腳印唄,謝謝啦~~


相關文章