刷刷程序员LeetCode笔试题【由易到难】,做个记录,也加深下印象

1、背景

好久没刷题了,觉得写代码,手有点生,这样可不行啊,于是就有了刷刷题的想法,正好也为将来找工作面试做好准备。(想起之前面的一家公司,项目经历谈的好好的,就是挂在笔试上来,人家出了一道很简单的入门级的题都没做出来,唉,太丢人了,搞得别人以为我是骗子呢,只会吹牛)

于是,就有了刷刷题,保持写代码的感觉的想法,坚持有空就写写吧。

2、开始正题

【----------------------------------------------2024-11-15--------------------------------------------------------】

第1道(入门):斐波那契数列

描述:大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列的定义,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3。、

输入描述:一个正整数n
返回值描述:输出一个正整数。

分析:这题很老了,有写递归函数实现的做法,但我觉得递归太耗内存了,一层层递归,所以我用的是迭代,保证从第3项开始,下一项为前两项的和,然后再更新前两项就行了

实现的代码如下,通过了网站给的测试用例:

int Fibonacci(int n ) {
   
   
    if(n <= 0)
        return -1;
        
    // write code here
    //1 1 2 3 5 8 13 21
    //1 2 3 4 5 6 7  8
    int before = 1;
    int now = 1;
    int next = 2;

    int i = 0;

    if(n == 1)
        return 1;
    else if(n == 2)
        return 1;
    else
    {
   
   
        for(i = 2;i < n;i++)
        {
   
   
            next = before + now;
            before = now;
            now = next; 
        }
        return next;
    };
}

第2道(入门):反转字符串

描述:写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

分析:这个题目很好理解,也很简单,但是用C语言实现比较麻烦点,但我想到一个稍微简单一点的办法,就是交换,用首尾交换,然后两端一直往中间交换,就可以实现反转字符串了,还是有点小聪明的,哈哈哈。

实现的代码如下,通过了网站给的测试用例:

char* solve(char* str ) {
   
   
    // write code here
    if(NULL == str)
        return NULL;

    char* temp = NULL;
    temp = str;
    int str_length = 0;
    int i = 0;
    char c_temp;

    //get str length
    while(*temp != '\0')
    {
   
   
        str_length++;
        temp++;
    }

    //idea: first exchange last and so on
    for(i = 0; i < str_length / 2; i++)
    {
   
   
        c_temp = str[i];
        str[i] = str[str_length - i - 1];//头部的字符赋值为尾部的字符
        str[str_length - i - 1] = c_temp;//尾部的字符赋值为头部的字符,从而实现反转
    }

    return str;
}

第3道(入门):判断是否为回文字符串

描述:给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。

字符串回文指该字符串正序与

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值