python输入hello输出olleh_leetcode上的python练习(6)

本文介绍了四个Python编程问题,包括计算整数数组的子数组和、判断整数是否为幂次方、检查整数是否为特定幂次,并实现字符串反转和查找唯一字符。通过实例演示和代码实现,帮助读者理解并掌握这些基本算法技巧。
摘要由CSDN通过智能技术生成

(303)给定一个整数数组 nums,求出数组从索引 i到 j(i ≤ j) 范围内元素的总和,包含 i, j两点。

示例:

给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()

sumRange(0, 2) -> 1

sumRange(2, 5) -> -1

sumRange(0, 5) -> -3

答:

class NumArray(object):

def __init__(self, nums):

"""

:type nums: List[int]

"""

self.nums=nums

def sumRange(self, i, j):

"""

:type i: int

:type j: int

:rtype: int

"""

sums=sum(self.nums[i:j+1])

return sums

# Your NumArray object will be instantiated and called as such:

# obj = NumArray(nums)

# param_1 = obj.sumRange(i,j)

(326)给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27

输出: true

示例 2:

输入: 0

输出: false

示例 3:

输入: 9

输出: true

示例 4:

输入: 45

输出: false

答:

class Solution:

def isPowerOfThree(self, n):

"""

:type n: int

:rtype: bool

"""

while n>=3:

n=n/3

return n==1.0

(342)给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

示例 1:

输入: 16

输出: true

示例 2:

输入: 5

输出: false

答:

class Solution:

def isPowerOfFour(self, num):

"""

:type num: int

:rtype: bool

"""

while num>=4:

num/=4

return num==1.0

(344)编写一个函数,其作用是将输入的字符串反转过来。

示例 1:

输入: "hello"

输出: "olleh"

示例 2:

输入: "A man, a plan, a canal: Panama"

输出: "amanaP :lanac a ,nalp a ,nam A"

答:

class Solution:

def reverseString(self, s):

"""

:type s: str

:rtype: str

"""

return s[::-1]

(345)编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

输入: "hello"

输出: "holle"

示例 2:

输入: "leetcode"

输出: "leotcede"

答:

class Solution:

def reverseVowels(self, a):

"""

:type s: str

:rtype: str

"""

b=[]

c=''

for i in a:

if i in "aeiouAEIOU":

b.append(i)

for i in a:

if i in "aeiouAEIOU":

c+=b.pop()

else:

c+=i

return c

(349)给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]

输出: [2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

输出: [9,4]

答:

class Solution:

def intersection(self, nums1, nums2):

"""

:type nums1: List[int]

:type nums2: List[int]

:rtype: List[int]

"""

a=[]

nums1=set(nums1)

nums2=set(nums2)

if len(nums1)>=len(nums2):

for i in nums2:

if i in nums1:

a.append(i)

if len(nums2)>len(nums1):

for i in nums1:

if i in nums2:

a.append(i)

return a

(350)给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]

输出: [2,2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

输出: [4,9]

答:

class Solution:

def intersect(self, nums1, nums2):

"""

:type nums1: List[int]

:type nums2: List[int]

:rtype: List[int]

"""

res = []

for k in nums1:

if k in nums2:

res.append(k)

nums2.remove(k)

return res

(367)给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

注意:不要使用任何内置的库函数,如 sqrt。

示例 1:

输入: 16

输出: True

示例 2:

输入: 14

输出: False

答:

class Solution:

def isPerfectSquare(self, n):

"""

:type num: int

:rtype: bool

"""

if n**0.5-int(n**0.5)==0:

return True

else:

return False

(371)不使用运算符 + 和-,计算两整数a 、b之和。

示例:

若 a = 1 ,b = 2,返回 3。

答:

class Solution:

def getSum(self, a, b):

"""

:type a: int

:type b: int

:rtype: int

"""

return sum([a,b])

(374)我们正在玩一个猜数字游戏。 游戏规则如下:

我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。

每次你猜错了,我会告诉你这个数字是大了还是小了。

你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

-1 : 我的数字比较小

1 : 我的数字比较大

0 : 恭喜!你猜对了!

示例:

n = 10, 我选择 6.

返回 6.

答:

# The guess API is already defined for you.

# @param num, your guess

# @return -1 if my number is lower, 1 if my number is higher, otherwise return 0

# def guess(num):

class Solution(object):

def guessNumber(self, n):

"""

:type n: int

:rtype: int

"""

left=0

right=n

while left<=right:

middle=(left+right)//2

num=guess(middle)

if num==-1:

right=middle-1

if num==0:

return middle

if num==1:

left=middle+1

(383)给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。

(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)

注意:

你可以假设两个字符串均只含有小写字母。

canConstruct("a", "b") -> false

canConstruct("aa", "ab") -> false

canConstruct("aa", "aab") -> true

答:

class Solution(object):

def canConstruct(self, ransomNote, magazine):

"""

:type ransomNote: str

:type magazine: str

:rtype: bool

"""

for i in ransomNote:

if i in magazine:

magazine = magazine.replace(i,'',1)

else:

return False

return True

(387)给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

s = "leetcode"

返回 0.

s = "loveleetcode",

返回 2.

答:(超时)

class Solution:

def firstUniqChar(self, s):

"""

:type s: str

:rtype: int

"""

for i in s:

if s.count(i)==1:

return s.index(i)

return -1

答:

class Solution:

def firstUniqChar(self, s):

"""

:type s: str

:rtype: int

"""

dic=collections.Counter(s)

for i in range(len(s)):

if dic[s[i]]==1:

return i

return -1

(389)给定两个字符串 s 和 t,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例:

输入:

s = "abcd"

t = "abcde"

输出:

e

解释:

'e' 是那个被添加的字母。

答:

class Solution:

def findTheDifference(self, s, t):

"""

:type s: str

:type t: str

:rtype: str

"""

dic=collections.Counter(s)

di=collections.Counter(t)

for i in di:

if dic[i]!=di[i]:

return i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值