习leetcode题目:回文数之所学:sprintf函数和内存分配

题目:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数:是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。
bool isPalindrome(int x) {
    char str[100];
    if (str)
    {
        sprintf(str, "%d", x);
        int left = 0;
        int right = strlen(str) - 1;
        while (right > left)
        {
            if (str[left++] != str[right--])
            {
                return false;
            }
        }
        return true;
    }
    else
        return false;
}

在运行上的注意事项:

1.sprintf函数:

int sprintf( char *buffer, const char *format [, argument,…] );buffer是字符数组名;format是格式化字符串。

sprintf与printf函数类似,都使用格式化字符串来指定串的格式,在格式串内部使用一些以”%”开头的格式说明符来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。

2.关于静态内存分配和动态内存分配

此处使用静态内存(char str[100];)分配在内存空间和运行时间上会明显优于使用动态内存分配(char* str=(char*)malloc(sizeof(char)*100;),这是由于动态内存分配设计到堆的管理和分配算法等复杂操作,且需要手动释放内存空间。

但动态内存分配优点在于灵活性,若是需要调整内存大小或需要大量内存时,动态内存分配更合适。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值