Day 9

第67题:

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。(来自LeetCode)

1、对于二进制数求和,再Java里可以直接将两个二进制数转换位十进制数,相加再将其转化位二进制数,但是其中当位数过大时会发生错误。

2、另一种可以用下标分别指向a和b两个二进制数的末端,用sum接收所得的和,将sum%2存入创建的数组result中,carry接收sum/2;

  当循环到最后下标指向0,如果carry还持有值,将其赋予result[0],如果carry位0,就把result里所有位前移一位。

  

第20题:

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)

1、判断字符串是否有效,可以使用栈来帮助判断;

  当遇见‘(’'{''['时,将其入栈,当遇见‘)’'}'']'时将栈内指向元素推出,判断这两个是否匹配,匹配就将继续下一步判断,不匹配返回false;

  循环下去,得出结果。

   

第21题:

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 (来自LeetCode)

1、用两个指针p、q分别指向两个链表头部,创建一个新的指针来接收新的链表;

  比较p、q指向的元素大小,哪个元素小,其指针就后移一位,依次循环就可以得到res结果链表了;

  其实就是相当于再两个链表之间创建了一些新连接,使之有序组合在一起。

  

原文地址:https://www.cnblogs.com/liang-yi-/p/13185531.html