leetcode271題,字串的編碼與解碼。
請你設計乙個演算法,可以將乙個字串列表編碼成為乙個字串,並且可以在接收端被解碼回原來的字串列表。
1、取了%號來做識別長度,用strsize%len0%str[0]len1%str[1]…這樣的方式來拼接,保證字串前面都是數字和%的方式,來告訴對端當前的size,這個思想比較靈魂,借鑑了題解。
2、編碼過程中,使用sprintf函式快速把整型的len錄入到字串,使用strcat進行str[i]的拼接
3、指標可以用+1移位的方法,來讓字串往下走,另外如果當前字串沒有結束符,可以使用memcpy+賦值末尾為』\0』來生成字串。
leetcode71題,簡化路徑。/a/. . /. ./b/. ./c//.//其實路徑就是/c
1、char tmp[200][25]
來存臨時的char,特別好用,特別好除錯,別想不開去申請空間去存。記得賦初值,不然strcat會報錯,tmp[i][0] = '\0';
2、strcmp報錯,檢查入參一定要是變數,用comp和comp1來替換
3、strcat報錯,檢查入參是否賦值滿足條件。
4、memcpy(retfinal, rettmp, retlen);
一定要申請足夠的空間。
之前寫過c資料結構-字串操作 的故事,這兩個算是乙個應用類吧。
char
*simplifypath
(char
* path)
count =0;
p =strtok
(path,
"/")
;char comp=
".";
char comp2=
".."
;while
(p !=
null
)elseif(
strcmp
(p, comp2)==0
)else
p =strtok
(null
,"/");
}char rettmp[
5000];
rettmp[0]
='\0'
;for
(i =
0; i < count; i++)if
(count ==0)
int retlen =
strlen
(rettmp)+1
;char
*retfinal =
(char*)
malloc
(retlen)
; retfinal[0]
='\0'
;memcpy
(retfinal, rettmp, retlen)
;return retfinal;
}
#define maxlen 50000
char
*encode
(char
** strs,
int strssize)
char
* ret =
(char*)
malloc
(count +1)
;memcpy
(ret, tmp, count +1)
;return ret;
}char**
decode
(char
* s,
int* returnsize)
s = s +1;
if(strsize ==0)
count =0;
char
**ret =
(char**
)malloc
(sizeof
(char*)
*strsize)
;while
(count < strsize)
s = s +1;
ret[count]=(
char*)
malloc
(len +1)
;memcpy
(ret[count]
, s, len)
; ret[count++
][len]
='\0'
; s = s + len;
}*returnsize = count;
return ret;
}
資料結構 排序(氣泡排序公升級版)
排序 氣泡排序法公升級版 include include include include 氣泡排序 氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較相鄰的兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需...
字串 P1553 數字反轉(公升級版)
給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子與分母 百...
C 資料結構 字串
1 菜鳥教程 c 字串 2 3 4 官網教程 5 教程中的注釋 6 詳細的串定義與模式匹配演算法 1 串的定義 串 字串的簡稱 是由零個或多個字元組成的有限序列,一般記為s a1a2a3 an 其中ai可以是字母,數字或者其他字元,零個字元的串稱為空串。串中 任意個連續的字元組成的子串行 稱為該串的...