js-bilibili算法题-递归-倒序字符串

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

数组解法:(最好不要转换数据结构)
使用了...语法,性能差

function intToReverseStr(v) {
	if(!Array.isArray(v)) {
		v = v.toString().split('')
	}
	if(v.length == 1) {
		return v.pop()
	}
	if (v.length == 2) {
		v = [v.pop(), ...v]
	}
	if(v.length > 2) {
		v = [
			...v.pop(),
			...intToReverseStr(v)
		]
	}
	return v.join('')
}
console.log(intToReverseStr(2)) // 2
console.log(intToReverseStr(12)) // 21
console.log(intToReverseStr(1234)) // 4321

字符串解法:
使用了charAt()和substring(),遍历两次。

function res(num) {
    return String(num).length ? `${res(String(num).substring(1))}${String(num).charAt(0)}` : String(num);
}
let str = res(1234);

第三种解法:
性能最优

function test(str) {
	num1 = str / 10
	num2 = str % 10
	if(num1 < 1) {
		return str + ''
	}
	if (num2 > 0) {
		num1 = num1 >>> 0
		return num2 + test(num1)
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值