JS如何反转字符串以及如何将数字转换为数字数组

写一道算法题给自己整挺懵逼,敲!!!

  • 看清楚题目吧!!!给自己默默磕上三千个脑袋

两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头

1-1 正经解法:通过移动指针,定义变量记录进位来返回结果链表

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    // 定义变量来记录是否进位
    let carry = 0;
    // 定义结果链表头结点,空结点
    let head = new ListNode();
    // 定义移动指针,持续指向结果当前结点
    let curr = head;

    // 两个非空链表其一有值时
    while(l1 || l2){
        const addend1 = l1 ? l1.val : 0;
        const addend2 = l2 ? l2.val : 0;
        
        const sum = addend1 + addend2 + carry;
        curr.next = new ListNode(sum% 10);
        //移动指针
        curr = curr.next;

        carry = Math.floor(sum/10);

        //这里要加判断
        // l1.next;
        // l2.next;

        if (l1) l1 = l1.next;
        if (l2) l2 = l2.next;
    }
    if(carry) curr.next = new ListNode(carry);
    return head.next;
};


1-2 当我试图返回一个结果数组时

我悄悄把Array、Number、String的实例方法过了三遍/(ㄒoㄒ)/~~

  • 最后返回的是个数组????
  • 写个博客记录一下,就好很多,嘿嘿

Number 对象
Array 对象
String对象

var addTwoNumbers = function(l1, l2) {
    let str1 = ""
    let str2 = ""
    let current = l1
    let current2 = l2
    while( current) { 
        // console.log(current.val)
        str1= str1.concat(current.val)
        current = current.next   
    }
    const add1 = Number(str1.split('').reverse().join(''))

     while( current2) { 
        // console.log(current.val)
        str2= str2.concat(current2.val)
        current2 = current2.next   
    }
    const add2 = Number(str2.split('').reverse().join(''))

    let result = add1 + add2

    let bbb = ([...result+""]).map(a=>parseInt(a)).reverse()
    console.log(bbb)
    return bbb
};
1-2-1 JavaScript 字符串翻转

参考文章 https://juejin.cn/post/6902323901888462862

  1. 使用JS内置方法: str.split('').reverse().join('')
1-2-2 JS将数字变成数组:
var n = 123;
var arr=n.toString().split("");     // 结果: ['1','2','3']

我需要[1,2,3],有些搞头

  1. 遍历之后将索引所在的Sttring值通过parseInt(),或者Number()变为Number
function numToArray(num){
           var str = num + "";
           var resultArr = [];
           for(var i = 0; i < str.length; i++){
               resultArr.push(parseInt(str[i]))
           }
           return resultArr;
        }
        var numToArrayResult = numToArray(12345);
        console.log(numToArrayResult) ;//[1, 2, 3, 4, 5]

  let bbb = ([...result+""]).map(a=>parseInt(a)).reverse()
  console.log(bbb)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值