题解 | 逗号整合器

逗号整合器

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;
}

全部评论

相关推荐

昨天 16:04
已编辑
安徽农业大学 算法工程师
痴心的她allin秋...:啥笔试都挂怎么办,某9本考研下岸,练也没时间了,对算法也不感兴趣,大部分大厂笔试只能A0-1个😄
米哈游笔试
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务