首页 > 有赞笔试 2021/08/21
头像
keboom
发布于 2021-08-21 13:31
+ 关注

有赞笔试 2021/08/21

有赞笔试

单选题

已知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) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐