LeetCode 面試題01.06
我之前的思路是引入count2作為不同字母的個數從而確定壓縮後字串的下標,而且在下面的for迴圈的else分支是這樣賦值的:
q[2*count2] = p[i];
q[2*count2+1] = '0' + count1;
顯然這是錯誤的,當count1>=10時,就會發生越界錯誤。
這裡感謝一起學習的大佬提供的思路,使用sprintf能有效解決這個問題,其返回值正好可以幫助確定下標。
```c
char * compressString(char * S)
{
int len = strlen(S);
int clen;
char *q = (char *)malloc(sizeof(char)*(2*len));
int count1 = 1;//統計相同字母的個數
int count2 = 0;//確定輸出字串的下標
if(len <= 2)
{
return S;
}
for(int i = 1;i < len+1 ; ++i)
{
if(S[i-1] == S[i])
{
count1++;
}
else
{
q[count2++] = S[i-1];
clen = sprintf(&q[count2],"%d",count1);
count2 += clen;
count1 = 1;
}
}
q[count2] = '\0';
clen = strlen(q);
if(clen < len)
{
return q;
}
return S;
}
相關文章
- leetcode-面試經典150題LeetCode面試
- LeetCode 74,直擊BAT經典面試題LeetCodeBAT面試題
- LeetCode#面試題 17.10. 主要元素LeetCode面試題
- 「面試必問」leetcode高頻題精選面試LeetCode
- 【LeetCode】面試題 01.03. URL化(Java)LeetCode面試題Java
- 企業面試激發LeetCode刷題日常面試LeetCode
- Leetcode每日一題:面試題16.19.水域大小LeetCode每日一題面試題
- Leetcode刷題面試題 16.14. 最佳直線LeetCode面試題
- 前端面試必備-40道LeetCode經典面試演算法題前端面試LeetCode演算法
- [leetcode/lintcode 題解] 微軟 面試題:實現 Trie(字首樹)LeetCode微軟面試題
- LeetCode 面試題 08.03. 魔術索引 | PythonLeetCode面試題索引Python
- leetcode我們必知必會的SQL面試題LeetCodeSQL面試題
- LeetCode 經典面試題 //千分位隔數LeetCode面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- leetcode 面試題02.08.環路檢測 JavaLeetCode面試題Java
- leetcode:面試題 01.08. 零矩陣(陣列,中等)LeetCode面試題矩陣陣列
- #力扣 LeetCode面試題 04.08. 首個共同祖先 @FDDLC力扣LeetCode面試題
- LeetCode高頻演算法面試題 - 002 - 兩數相加LeetCode演算法面試題
- leetcode:程式猿面試技巧LeetCode面試
- 面試題:面試經面試題
- 微軟面試題: LeetCode 91. 解碼方法 出現次數:3微軟面試題LeetCode
- leetcode面試經典150題- 189. 輪轉陣列LeetCode面試陣列
- 「面試題」20+Vue面試題整理面試題Vue
- 前端面試送命題:面試題篇前端面試題
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 【面試】前端面試題前端面試題
- 面試題面試題
- leetcode 面試題08.08. 有重複字串的排列組合LeetCode面試題字串
- [面試題]大廠常見面試題整理面試題
- 【面試】面試題之汽水空瓶子問題面試題
- LeetCode問題LeetCode
- RabbitMQ面試專題,面試必看MQ面試
- 談談面試與面試題面試題
- 面試題1:9月25日面試題面試題
- [面試題]事件迴圈經典面試題解析面試題事件
- vue面試題Vue面試題
- zookeeper面試題面試題
- Go 面試題Go面試題