有赞笔试
单选题
已知IP地址130.63.160.2和子网掩码255.255.255.0,求子网号?
查询答案后子网号应该是160
某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过()时系统不会发生死锁。答案是5
斐波那契递归实现的时间复杂度?2^n
多选题
忘了
编程题
第一题
给你一个字符串s,和一个匹配字符串p,求这两个字符串是否匹配?
.表示匹配任意字符
*表示零个或多个字符
例子:
"aa" "a" false
"ab" ".*" true
"aab" "c*a*b*" true
"misspis" "mis*pi" false
我的代码只通过了60%
/** * @author keboom * @date 2021/8/21 */ public class Solution1 { public boolean isMatch(String s, String p) { StringBuilder sb = new StringBuilder(s+"-"); char[] pchars = p.toCharArray(); for (int i = 0; i < pchars.length-1; i++) { if (pchars[i] == '.' && pchars[i + 1] == '*') { return true; } else if (pchars[i] == '.') { sb.deleteCharAt(0); continue; } else if (pchars[i + 1] != '*') { if (pchars[i] == sb.charAt(0)) { sb.deleteCharAt(0); } else { return false; } } else if (pchars[i + 1] == '*') { if (pchars[i] != sb.charAt(0)) { continue; } else { if (sb.charAt(1) != sb.charAt(0)) { return false; } else { while (pchars[i] == sb.charAt(0)) { sb.deleteCharAt(0); } } } } else if (pchars[i] == '*') { continue; } if (i == pchars.length - 2) { return sb.length() == 0; } } return false; } public static void main(String[] args) { StringBuilder sb = new StringBuilder("123"); System.out.println(sb.charAt(0)); } }
第二题
给一个数组,判断它是否是严格升序或者降序
例子:
1 2 3 true
1 2 2 3 false
6 2 1 true
6 2 2 1 false
这个通过全部:
/** * @author keboom * @date 2021/8/21 */ public class Solution2 { public boolean isMonotonic (int[] nums) { if (nums.length == 1) { return true; } if (nums.length == 2) { return nums[0] != nums[1]; } if (nums[0] == nums[1]) { return false; } // 单调递增则为1,递减则为-1 int zj = nums[0] > nums[1] ? -1 : 1; for (int i = 0; i < nums.length - 1; i++) { if (zj == 1) { if (nums[i] >= nums[i + 1]) { return false; } } else { if (nums[i] <= nums[i + 1]) { return false; } } } return true; } }
全部评论
(3) 回帖