js和python经典面试题

1题目要求如下

用 JavaScript 写一个函数,输入 int 型,返回整数逆序后的字符串。如:输入整型 1234,返回字符串“4321”。要求必须使用递归函数调用,不能用全局变量,输入函数必须只有一个参数传入,必须返回字符串。

分析:由于输入的是整形,我们需要把它转化为字符串 在js中 出现了加减乘除都会发生隐式的类型转换 由于无论是什么数 都有 这个数与10的余数都是他的最后一位数,即个位数,所有我们可以使用递归的思想,不断对这个数取10的余数,然后相加,最后如果这个数小于10直接返回 ,也就是递归退出的条件
解法如下

function reverse2(nums){
  nums = parseInt(nums)
  if (nums>10){
    return String(nums%10)+reverse2(nums/10)
  }else{
    return String(nums)
  }
}
console.log(reverse2(1234)); // 4321
console.log(typeof reverse2(1234)); // String

2题目要求如下

已知如下数组:

arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10]

编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
这个问题可以分三步解决,

  1. 将题目所给数组扁平
  2. 将数组去重
  3. 对数组进行升序排列

经过以上三步 就可以得到一个全新的数组 符合题目的要求
具体实现步骤如下 本来是可以利用python的集合和内置函数的,这次我采用函数式编程,自己造轮子。
进行扁平化

def flat_array(arr):
	for x in arr:
		if type(x) == list:
			flat_array(x)
		else:
			new_arr.append(x)
	return remove_duplicate(new_arr)


进行去重

def remove_duplicate(flat_arr):
	li = []
	for i in flat_arr:
		if i not in li:
			li.append(i)
	return sort(li)

进行排序 这里使用的是插入排序,哪一种排序都可以看你自己喜欢哪一种就用哪一种

def sort(alist):
	n = len(alist)
	for i in range(n-1):
		j = i+1
		while j != 0:
			if alist[j] > alist[j-1]:
				alist[j],alist[j-1] = alist[j-1],alist[j]
				j-=1
			else:
				break
	return alist

结果如下图

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

这个博文会长期更新的,先就这样啦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值