算法每日一练入门篇一

Posted 程序员唐丁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法每日一练入门篇一相关的知识,希望对你有一定的参考价值。

入门篇

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

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

以上是关于算法每日一练入门篇一的主要内容,如果未能解决你的问题,请参考以下文章

算法每日一练入门篇一

算法题每日一练---第52天:位运算求解子集

算法每日一练(入门篇二)

算法每日一练(入门篇二)

算法每日一练(入门篇二)

每日一练(day12&PriorityQueue)