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 面試題16.07[最大數值]LeetCode面試題
- leetcode-面試經典150題LeetCode面試
- 【LeetCode】面試題 01.03. URL化(Java)LeetCode面試題Java
- LeetCode#面試題 17.10. 主要元素LeetCode面試題
- Leetcode每日一題:面試題16.19.水域大小LeetCode每日一題面試題
- Leetcode刷題面試題 16.14. 最佳直線LeetCode面試題
- LeetCode 74,直擊BAT經典面試題LeetCodeBAT面試題
- 「面試必問」leetcode高頻題精選面試LeetCode
- LeetCode 面試題 08.03. 魔術索引 | PythonLeetCode面試題索引Python
- leetcode 面試題02.08.環路檢測 JavaLeetCode面試題Java
- [leetcode/lintcode 題解] 微軟 面試題:實現 Trie(字首樹)LeetCode微軟面試題
- leetcode我們必知必會的SQL面試題LeetCodeSQL面試題
- leetcode:面試題 01.08. 零矩陣(陣列,中等)LeetCode面試題矩陣陣列
- LeetCode 經典面試題 //千分位隔數LeetCode面試題
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- leetcode面試經典150題- 189. 輪轉陣列LeetCode面試陣列
- LeetCode高頻演算法面試題 - 002 - 兩數相加LeetCode演算法面試題
- #力扣 LeetCode面試題 04.08. 首個共同祖先 @FDDLC力扣LeetCode面試題
- 面試題:面試經面試題
- 前端面試必備-40道LeetCode經典面試演算法題前端面試LeetCode演算法
- leetcode 面試題08.08. 有重複字串的排列組合LeetCode面試題字串
- 「面試題」20+Vue面試題整理面試題Vue
- 面試題面試題
- react面試題 機試題React面試題
- 面試測試題面試
- 測試面試題面試題
- RabbitMQ面試專題,面試必看MQ面試
- 精選 TOP 面試題 001 | LeetCode 237. 刪除連結串列面試題LeetCode
- 面試題1:9月25日面試題面試題
- [面試題]事件迴圈經典面試題解析面試題事件
- 【面試】面試常見問題整理面試
- 【Java面試】JSP常見面試題!JavaJS面試題
- 【Java面試】Servlet常見面試題!JavaServlet面試題
- 【Java面試】 Javascript常見面試題!JavaScript面試題
- webpack面試題Web面試題
- Promise面試題Promise面試題
- 面試題-mysql面試題MySql