奇怪我有一種一失足成千古恨的感覺XD
究竟~~~是要存char , 還是要存int 呢!!!
一開始覺得是char, 後來不知為啥又改成了int, 是不是反而多此一舉啊哈哈哈 XDDDD
char * decodeMessage(char * key, char * message){
int* map= malloc (sizeof(int)*26);
memset(map, -1, sizeof (int)*26) ;
int removeSpaceCount=0;
for (int i=0;i<strlen(key);i++)
if (key[i]!=' ' && map[key[i]-'a'] <0)
map[key[i]-'a'] =removeSpaceCount++;
char* output= malloc (sizeof(char)* (strlen(message)+1));
for (int i=0;i<strlen(message);i++)
{
if (message[i]== ' ')
output[i]=message[i];
else
output[i]= 'a'+map[message[i]-'a'];
}
output[strlen(message)]='\0';
return output;
}
另外這題有個陷阱就是, 很容易忘記把空格考慮進去啊!
算index 的時候會超過26!!! 就是空白惹的禍!!!
如果把return 值直接填回原本的message, 那不但少了一個malloc return 字串,
也可以省掉檢查空白的部分. 因為原本空白的部分就不會改變~~~
沒有留言:
張貼留言