时间复杂度:几次循环就是n的几次方的复杂度
1、判断1,2,3,4组成不同的三位数
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if (i!=j) and (i!=k) and (j!=k):
print (i,j,k)
2、判断一个字符串或数字是不是回文
s1 = input()
#s1 = raw_input()
# if not s:raw_
# print('请不要输入空字符串!')
# s = input('请重新输入一个字符串:')
s = str(s1)
a = len(s)
i = 0
count = 1
while i <= (a/2):
if s[i] == s[a-i-1]:
count = 1
i += 1
else:
count = 0
break
if count == 1:
print('输入内容是回文')
else:
print('输入内容不是回文')
3、字符串反转的几种方式
(1)使用字符串切片
result = s[::-1]
(2)使用列表的reverse方法
l = list(s)
l.reverse()
result = "".join(l) #join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
(3)使用递归函数
s = 'ascdfv'
def func(s):
if len(s) <1:
return s
return func(s[1:])+s[0]
result = func(s)
print result
4、素数(质数)判断
n = input("输入一个数:")
if n >1:
for i in range(2,n):
if (n % i) == 0:
print (n,"不是质数")
break
print (n,"是质数")
else:
print (n,"不是质数")
5、冒泡排序
l = input()
a = list(l)
for i in range(1,len(a)):
for j in range(0,len(a)-i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
print(a)
冒泡的优化:
如果排序执行了一趟数据没有交换,那么说明列表已经是有序状态,可以直接结束算法:
def bubbel_sort(data):
for i in range(len(data) - 1):
exchange = False
for j in range(len(data) - i - 1):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
exchange = True
if not exchange:
break
6、统计列表相同内容出现的个数
def counter_num(List):
#定义一个字典
counter={}
for i in List:
#List.count(i)统计列表元素对应的个数
# if List.count(i) > 1:
counter[i] = List.count(i)
print(counter)
if __name__ == '__main__':
List = [1, 2, 3, 1, 2, 3,"python", 4,5,"python"]
counter_num(List)
7、请写出一段python代码,实现删除一个list的重复元素(去重,面试经常考)
list = [1,1,2,2,3,3,4,4,2,1]
r = []
for i in list:
if i not in r:
r.append(i)
print r
8、快乐数(编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和, 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1, 那么这个数就是快乐数。)
示例:
输入: 19
输出: true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
n = input()
num = [n]
while n !=1:
sum = 0
for i in str(n):
sum = sum + int(i)**2
if sum not in num:
num.append(sum)
else:
print False
break
n = sum
if n ==1:
print True
9、二分查找法
def BinarySearch(array,t):
low = 0
height = len(array)-1
while low < height:
mid = int((low+height)/2)
if array[mid] < t:
low = mid + 1
elif array[mid] > t:
height = mid - 1
else:
return array[mid]
return -1
if __name__ == "__main__":
print (BinarySearch([1,2,3,34,56,57,78,87],51))
10、快速排序
a = [1,6,9,3,5,6,2,5,0]
for i in range(len(a)-1):
minIndex = i
for j in range(i+1,len(a)):
if a[j] < a[minIndex]:
minIndex = j
if i != minIndex:
a[i],a[minIndex] = a[minIndex],a[i]
print(a)