第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结果链表了;
其实就是相当于再两个链表之间创建了一些新连接,使之有序组合在一起。