题解 | 逗号整合器
逗号整合器
https://www.nowcoder.com/practice/ff77cca50f5d4793a14a94f141de0af3
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 整理出一个将序列中的数字以逗号隔开从而得到的字符串
* @param a int整型一维数组 需要整理的序列 a
* @param aLen int a数组长度
* @return string字符串
*/
char* commaTransformer(int* a, int aLen ) {
// write code here
if(aLen == 0)
{
char *res = (char *)malloc(sizeof(char) * 1);
res[0] = '\0';
return res;
}
int totalLen = 0;;
for(int i = 0;i < aLen;i++)
{
totalLen += snprintf(NULL,0,"%d",a[i]);
}
totalLen += aLen - 1 + 1;// 补充总长度:(aLen-1)个逗号(元素间仅1个逗号) + 1个字符串结束符'\0'
char *result = (char*)malloc(totalLen);
result[0] = '\0';
for(int i = 0;i < aLen;i++)
{
if(i > 0)
{
strcat(result,",");
}
char numStr[20];
snprintf(numStr,sizeof(numStr),"%d",a[i]);// snprintf:将a[i]按"%d"格式转为字符串,存入numStr,最多写sizeof(numStr)-1字节(避免溢出)
strcat(result,numStr);
}
return result;
}