算法每日一练入门篇一

入门篇

1、字符串反转

描述

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

示例1

输入:

"abcd"

返回值:

"dcba"

题解

解法一:

思路:直接使用语言的库函数完成

Python版

class Solution:
    def solve(self , str ):
        return str[::-1]
#         result = ""
#         for i in range(len(str)-1,-1,-1):
#             result += str[i]
#         return result

Java版

import java.util.*;
public class Solution {
    public String solve (String str) {
        StringBuffer sb =new StringBuffer(str);
        return sb.reverse().toString();
    }
}
解法二:

思路:开辟一个和str长度大小相同的一个字符串,把传入的str倒序赋值到新开的字符串上

Python版

class Solution:
    def solve(self , str ):
         result = ""
         for i in range(len(str)-1,-1,-1):
             result += str[i]
         return result

Java版

import java.util.*;


public class Solution {
    public String solve (String str) {
        char[] str2 = str.toCharArray();
        int len = str.length();
        for (int i=0;i<len;i++){
            str2[i] = str.charAt(len-1-i);
        }
        return new String(str2);
    }
}
解法三:

思路:原地替换

Python版

class Solution:
    def solve(self , str ):
         result = list(str)
         len_ = len(str)
         for i in range(0,int(len_/2):
             result[i],result[len_-1-i] = result[len_-1-i],result[i]
         return ''.join(result)

Java版

import java.util.*;
public class Solution {
    public String solve (String str) {
        char[] cstr = str.toCharArray();
        int len = str.length();
        for(int i = 0 ; i < len/2 ;i++)
        {
                char t = cstr[i];
                cstr[i] = cstr[len-1-i];
                cstr[len-1-i]=t;
        }
        return new String(cstr);
    }
}

2、斐波那契数列

描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。

n\leq 39n≤39

示例1

输入:

4

返回值:

3

题解

解法一(顺序相加):

思路:定义好前两个数字,然后按顺序将前两位相加得到新的斐波那契数列的值

Python版

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        a = 0
        b = 1
        if n == 0:
            return a
        elif n == 1:
            return 1
        for i in range(0,n-1):
            c = a + b
            a,b = b,c
        return c

Java版

public class Solution {
    public int Fibonacci(int n) {
        int a = 0;
        int b = 1;
        int res = 0;
        if (n<=1)
            return n;
        else{
            for (int i=0;i<n-1;i++){
                res = a + b;
                a = b;
                b = res;
            }
            return res;
        }
    }
}

解法二(递归):

思路:这种题型很明显可以用递归来解决,如果n为0或1时,直接返回n,当n大于1时,进行递归相加。当然如果数字比较大时不推荐使用递归。

Python版

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        if n<=1:
            return n
        else:
            return self.Fibonacci(n-1)+self.Fibonacci(n-2)

Java版

public class Solution {
    public int Fibonacci(int n) {
        int a = 0;
        int b = 1;
        int res = 0;
        if (n<=1)
            return n;
        else{
            return Fibonacci(n-1)+Fibonacci(n-2);
        }
    }
}

公众号现有功能:课表、成绩、四六级、专利查询(即将上线)、计算机等级考试查询(即将上线)、教资成绩查询(即将上线)、影视资源获取、小说资源获取。欢迎大家使用
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员唐丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值