題目
字串壓縮。利用字元重複出現的次數,編寫一種方法,實現基本的字串壓縮功能。比如,字串aabcccccaaa會變為a2b1c5a3。若「壓縮」後的字串沒有變短,則返回原先的字串。你可以假設字串中只包含大小寫英文本母(a至z)。
示例1:
輸入:「aabcccccaaa」
輸出:「a2b1c5a3」
示例2:
字串長度在[0, 50000]範圍內。
解答:
string compressstring
(string s)
if(f.
size()
>= s.
size()
)return s;
else
return f;
}
運用迭代器就可以很好的表示。
需要注意的有:
c++11標準中新加的包含在標頭檔案中的to_string()函式非常的香,可以把double、int等轉為string。
2.要寫成(y != s.end())&& (*y == *x))而不是 ( (*y == *x)&&(y != s.end())),運用其斷路特性,避免訪問 *s.end()。
c++11字串和數字轉換的函式:
to_string(val) 返回數值val的string表達。val可以為任何算數型別。
stoi(s,p,b) stol(s,p,b) stoul(s,p,b) stoll(s,p,b) stoull(s,p,b) stof(s,p,b) stod(s,p,b) stold(s,p,b) 返回s的起始子串表示數內容的數值。以上幾個函式分別對應int、long、unsigned long、long long、unsigned long long、float、double、long double。b表示轉換所用的基數,預設是10。p是size_t指標,用來儲存s中第乙個非數值字元的下標,p的預設值是0,即函式不儲存下標。
string s2 =
"pi = 3.14"
; string s =
"23.2"
;double d =
stod
(s2.
substr
(s2.
find_first_of
("+-.0123456789"))
);double sda =
stod
(s);
LeetCode 壓縮字串
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...
leetcode 壓縮字串
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個字元應該是 a 2 b 2 c 3 說明...
LeetCode 壓縮字串
題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣...