Java教程

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

本文主要是介绍算法每日一练(入门篇二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

3、最大公约数

描述

如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

输入 a 和 b , 请返回 a 和 b 的最大公约数。

数据范围:1≤a,b≤109

示例1

输入:

3,6

返回值:

3

示例2

输入:

8,12

返回值:

4

题解

解法(欧几里得算法)

思路:欧几里得算法的定理是:两个非负整数的最大公约数为其中较小的数和两数相除的余数的最大公约数。

Python递归版

class Solution:
    def gcd(self , a , b ):
        # write code here
        if a == 0:
            return b
        else:
            return self.gcd(b % a, a)

Python非递归

def gcd(a, b):
    # write code here
    while a != 0:
        a, b = b%a, a
    return b

4、判断回文

描述

给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。

示例1

输入:

"absba"

返回值:

true

示例2

输入:

"ranko"

返回值:

false

示例3

输入:

"yamatomaya"

返回值:

false

示例4

输入:

"a"

返回值:

true

备注:

字符串长度不大于1000000,且仅由小写字母组成

题解

解法一(利用Python切片特性)

def judge(str):
    return str == str[::-1]

解法二(遍历)

def judge(str):
    len_ = len(str)//2
    flag = 1
    for i in range(len_):
        if str[i] != str[len(str)-1-i]:
            return False
    return True

在这里插入图片描述

本公众号现提供以下服务:教务系统成绩和课表查询、四六级查询、小说和影视资源获取、教资成绩查询(即将上线)、专利查询(即将上线)、计算机等级考试查询(即将上线)

这篇关于算法每日一练(入门篇二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!