第一例:反转一个三位整数
问题:输入456,输出654,输入900,输出9
class Solution:
#输入456,输出654,输入900,输出9
def revereInger(self,number):
a=int(number/100)
b=int(number%100/10)
c=int(number%10)
return(c*100+b*10+a)
if __name__=='__main__':
number = int(input("输入一个三位数整数:"))
solution=Solution()
ans=solution.revereInger(number)
print("输出的数值为:",ans)
#注意点:input函数输入的是个字符串,如果改为数字,需要转换为int
第二例:合并排序数组
问题:合并两个升序的整数数组,生成一个新数组,且升序
class solution:
def mergeSortedArray(self,A,B):
i,j=0,0
C=[]
while i<len(A) and j<len(B):
if A[i]<B[j]:
C.append(A[i])
i+=1
else:
C.append(B[j])
j+=1
while i<len(A):
C.append(A[i])
i+=1
while j<len(B):
C.append(B[j])
j+=1
return C
if __name__=="__main__":
A=[1,2,3,4]
B=[2,3,4,6]
solution=solution()
print(solution.mergeSortedArray(A,B))
简单写法:
sorted()函数妙用
for i in range(len(B)):
A.append(B[i])
C=sorted(A)
return C
第三例:旋转字符串:
A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’
class solution:
def rotateString(self,s,offset):
if len(s)==0:
return False
elif len(s)>0:
offset=offset%len(s)#始终offset不超过len(s)
temp=(s+s)[len(s)-offset:2*len(s)-offset]
#相当于两个字符串合并,取需要的一段
for i in range(len(temp)):
s[i]=temp[i]
if __name__=='__main__':
s=["a","b","c","d","e","f","g"]
offset=3
solution=solution()
solution.rotateString(s,offset)
print("输出s:",s)
leetcode有类似题目,可以理解类似旋转字符串问题
第四例:二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
class Solution:
def search(self, nums, target):
left,right=0,len(nums)-1
while left<=right:
mid=left+(right-left)//2
if nums[mid]==target:
return mid
if target<nums[mid]:
right=mid-1
else:
left=mid+1
return -1
#要注意缩进问题