算法练习

将字符串转化为数字,实现int()方法

s = '298476'
n = 298476
s = s[::-1]
number = 0
for i, e in enumerate(s):
    print(i, e)
    for j in range(0, 10):
        if e == str(j):
            number += j*(10**i)
print(number)

回文数

def isPalindrome(x):
    if x < 0:#当数字是负数的时候必然不是回文数
        return False
    result = 0
    temp = x
    while temp != 0:
        result = result * 10 + temp % 10
        temp = temp // 10
        print(result, temp)
    return x == result

res = isPalindrome(1221)
print(res)

俩数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素

arr=[1,3,6,15]
target=9
# 一遍哈希表
def two_sum_with_dict2(nums, target):
    _dict = {}
    for i, e in enumerate(nums):
        if _dict.get(target - e) is not None:
            return (_dict.get(target - e), i)
        _dict[e] = i

res=two_sum_with_dict2(arr,target)
print(res)

# 暴力循环
def twoSum(nums,target):
    for i, m in enumerate(nums):
        j=i+1
        while j

反转字符串

eStr=["h","e","l","l","o"]
outputStr=["o","l","l","e","h"]
eStr.reverse()
# 双向指针
i, j = 0, len(eStr)-1
while i

反转字符串里的单词

rStr = "the sky is blue"
# 方法一
newrStr = rStr.split()
i, j = 0, len(newrStr)-1
while i < j:
    newrStr[i], newrStr[j] = newrStr[j], newrStr[i]
    i+=1
    j-=1
print(' '.join(newrStr))
# 方法二
print(' '.join(rStr.split()[::-1]))

冒泡排序

def bubbo_sort(arr):
    length = len(arr)
    for i in range(length):
        for j in range(length-i-1):
            if arr[j] > arr[j+1]:
                # tmp = arr[j]
                # arr[j]=arr[j+1]
                # arr[j+1]=tmp
                arr[j], arr[j+1] = arr[j+1], arr[j]

arr=[1,3,4,5,6,8,2,7]
bubbo_sort(arr)
print(arr)

你可能感兴趣的:(算法练习)