笔试强训(8)

news2025/1/16 15:40:31

笔试题1:密码强度等级密码强度等级_牛客题霸_牛客网

在这个题中:

1)统计密码的长度直接通过length()来进行解决

2)统计大写字母和小写字母的个数分别在函数里面定义两个变量来进行解决

3)统计数字和富豪也是分别用两个变量来进行保存

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            String str=scanner.nextLine();
            int sum1=getLength(str);//长度的总分数
            int sum2=getChar(str);//字符串中拥有字母的总分数
            int sum3=getDig(str);//字符串中拥有数字的总分数
            int sum4=getSym(str);//字符串中拥有其他符号的总分数
            int result=sum1+sum2+sum3+sum4;
            if(sum4!=0&&sum2==20&&sum3!=0){//这个条件应该写在最前面
                result=result+5;
            }else if(sum3!=0&&sum2!=0&&sum4!=0){
                result=result+3;
            }else if(sum4==0&&sum2!=0&&sum3!=0){
                result=result+2;
            }
            // System.out.println(result);
            if(result>=90){
                System.out.println("VERY_SECURE");
            }else if(result>=80&&result<90){
                System.out.println("SECURE");
            }else if(result>=70&&result<80){
                System.out.println("VERY_STRONG");
            }else if(result>=60&&result<70){
                System.out.println("STRONG");
            }else if(result>=50&&result<60){
                System.out.println("AVERAGE");
            }else if(result>=25&&result<50){
                System.out.println("WEAK");
            }else{
                System.out.println("VERY_WEAK");
            }
        }

    }
    public static int getLength(String str){
        int sum=0;
        if(str.length()<=4){
            sum=5;
        }else if(str.length()>=5&&str.length()<=7){
            sum=10;
        }else if(str.length()>=8){
            sum=25;
        }
        return sum;
    }
    public static int getChar(String str){
        int BigChar=0;
        int ShortChar=0;
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(ch>='a'&&ch<='z') ShortChar++;
            if(ch>='A'&&ch<='Z') BigChar++;
        }
        if(BigChar==0&&ShortChar==0){
            return 0;
        }else if(BigChar>0&&ShortChar==0){
            return 10;
        }else if(BigChar==0&&ShortChar>0){
            return 10;
        }else{
            return 20;
        }
    }
    public static int getDig(String str){
        int count=0;
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(ch-'0'>=0&&'9'-ch>=0){
                count++;
            }
        }
        if(count==0) return 0;
        else if(count==1) return 10;
        else return 20;
    }
    public static int getSym(String str){
        int sum=0;
        for(int i=0;i<str.length();i++){
            char ch=str.charAt(i);
            if(!(ch>=65&&ch<=90)&&!(ch>=97&&ch<=122)&&!(ch>='0'&&        ch<='9')){
                sum++;
            }
        }
        if(sum==0) return 0;
        if(sum==1) return 10;
        else return 25;
    }
}

笔试题2:井字棋井字棋__牛客网

给定一个二维数组,代表棋盘,当前元素为1的是代表当前玩家的棋子,0表示没有棋子,-1代表对方玩家的棋子,当一方棋子在横斜竖方向上面有连成排的就获胜,判断当前玩家是否胜出

输入用例:[[1,0,1],[1,-1,-1],[1,-1,0]]

做题思路:

1)先进行判断每一行相加是否等于每一行的行数,如果等于行数,那么就说明全部是1,那么结果胜利

2)我们在进行判断每一列相加是否等于每一行的列数,如果等于列数,那么就说明这一列的每一个元素全部是1,那么胜利,如果全部是-1,那么结果失败

3)同样我们可以用同样的方式来进行判断主对角线上面的元素和副对角线上面的元素

import java.util.*;

public class Board {
    public boolean checkWon(int[][] array) {
        int vectory=0;
        int defeat=0;
         int m=array.length;//表示行
        int n=array[0].length;//表示列
//1我们让每一行i先固定不动,这样就可以算出每一行的总和
      for(int i=0;i<m;i++){//行
          vectory=0;
          defeat=0;
          for(int j=0;j<n;j++){//列
          vectory=vectory+array[i][j];
          defeat=defeat+array[i][j];
          }
          if(vectory==m) return true;
          if(defeat==-m) return false;
      }
//2.我们可以让每一列j固定不动,这样就可以算出每一列的总和
    for(int j=0;j<n;j++){
           vectory=0;
           defeat=0;
        for(int i=0;i<m;i++){
            vectory=vectory+array[j][i];
            defeat=defeat+array[j][i];
        }
         if(vectory==n) return true;
         if(defeat==-n) return false;
    }
             vectory=0;
             defeat=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i==j){
                     vectory=vectory+array[i][j];
                     defeat=defeat+array[i][j];
                }
                
            }
        }
         if(vectory==n) return true;
         if(defeat==-n) return false;
             vectory=0;
             defeat=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i+j+1==m){
                     vectory=vectory+array[i][j];
                     defeat=defeat+array[i][j];
                }
            }
        }
         if(vectory==n) return true;
         if(defeat==-n) return false;
        return false;
    } 
}

笔试题3:最近公共祖先最近公共祖先__牛客网

题目描述:将一颗无穷大的满二叉树的结点按照根节点一层一层的从左向右编号,根节点编号是1,现在我们给定a,b两个节点,设计一个算法,返回最近a,b公共祖先的编号,注意其祖先也有可能是节点本身:

输入用例:2,3

返回:1

满二叉树:每一层节点都达到了最大节点数

原来这一颗二叉树是一个固定的二叉树,具体他是长成这样子的

思路:每一次让最大的数除以2,看看是否结果等于另一个数

1)如果说我们题目的具体输入是a==b,那么最近公共祖先就是a/2

2)假设如果说现在a!=b,那么此时举个例子吧:

假设现在题目输入了两个值:a=7,b=4;

1)让这两个数中比较大的值/2=>a=a/2=3;

2)我们在让这两个数中较大的值除以2,所以就可以得出:b=b/2=2;

3)我们在让这两个数种比较大的值除以2,a=a/2=1;

4)b=b/2=1,所以他们的最近公共祖先就是1;

public class LCA {
    public int getLCA(int a, int b) {
      if(a==b){
          return a;
      }
        while(true){
            if(a>b){
                a=a/2;
            }else{
                b=b/2;
            }
            if(a==b){
                break;
            }
        }
        return a;
    }
}

笔试题4:求最大连续bit数_牛客题霸_牛客网

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
          int max=0;
          int count=0;
          for(int i=0;i<31;i++){
                if(((n>>i)&1)==1){
                    count++;
                    if(count>max){
                        max=count;
                    }
                }else{
                    count=0;
                }
           }
    System.out.println(max);
        }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次 Maven 打包后,第三方无法使用的排查记录

你好&#xff0c;我是悟空。 本文主要内容如下&#xff1a; 前言 最近遇到一个需求&#xff1a; 写一个工具类的 JAR 包&#xff0c;然后提供给第三方使用。 期间遇到了一些问题&#xff1a; 第三方引入 JAR 包后&#xff0c;无法 import。第三方引入 JAR 包后&#xff0c…

你可以不看世界杯,但你一定要知道这些

2022卡塔尔世界杯&#xff0c;阿根廷夺冠&#xff0c;举世沸腾。 ​夺冠之路&#xff0c;遍布荆棘 时隔36年&#xff0c;阿根廷再次夺得大力神杯&#xff0c;回望夺冠之路&#xff0c;坎坷遍布&#xff0c;荆棘丛生。 2006年夏天&#xff0c;梅西第一次参加世界杯。时任阿根廷…

Mybatis源码(一)获取数据源

前言 Mybatis做为一种半ORM框架&#xff08;半&#xff1a;需要手动写sql&#xff09;。ORM&#xff08;Object Relational Mapping&#xff09;的技术本质是&#xff1a;ORM框架将对象的值 映射到 对应数据库类型&#xff1a; 如 String -> varchar。 且mybatis分为两种实…

数字孪生核电站促进界面监测的应用实践

未来核电站将向着数字化、智能化发展,“少人值守、智能监测”会广泛应用于核电站运行管理。利用数字孪生技术,可以对实体核电站和孪生核电站的数据进行交换分析,促进核电站的运行管理和监测,更好地确保反应堆运行安全。 数字孪生核电站促进界面监测的应用实践 北京智汇云舟科技…

h5中使用微信分享

1.需要 绑定域名&#xff1a; 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”&#xff08;即访问前端项目对应的域名)。 2.在项目中引入sdk: 在需要调用 JS 接口的页面引入如下 JS 文件&#xff0c;&#xff08;支持https&#xff09;&#xff…

搭vue项目(初级版)

这个项目只有 会员管理和直播管理两个模块。创建两个模块是为了验证一下路由跳转。 下载项目&#xff1a; 可以到我的资源中下载压缩包 或者 git clone 前端项目搭建: 前端搭建的项目&#xff0c;仅供学习使用 1.安装vue-cli,全局只需要安装一次&#xff0c;如果安装过一次&am…

MyBatisPlus ---- 入门案例

MyBatisPlus ---- 入门案例1. 开发环境2. 创建数据库及表a>创建表b>添加数据3. 创建SpringBoot工程a>初始化工程b>引入依赖c>idea中安装lombok插件4. 编写代码a>配置application.ymlb>启动类c>添加实体d>添加mappere>测试f>添加日志1. 开发环…

了解 Oracle 中单引号与双引号的用法,一篇文章教会你!

无论测试或者开发&#xff0c;对数据库的增删改查都是家常便饭。但有些小知识是经常被忽略&#xff0c;却又不能不去了解的&#xff0c;例如单引号和双引号的用法和区别&#xff0c;看完这一篇&#xff0c;你肯定会有收获。 首先我们要区别一个概念&#xff0c;即单引号(‘)和双…

docker应用部署示例

Docker 应用部署 一、部署MySQL 搜索mysql镜像 docker search mysql拉取mysql镜像 docker pull mysql:5.6创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建mysql目录用于存储mysql数据信息 mkdir ~/mysql cd ~/mysqldocker run -id \ -p 3307:3306 \ --na…

如何通过文档管理控制合同管理

如何通过文档管理控制合同管理 如果您的公司处理的合同比以往任何时候都多&#xff0c;那么您并不孤单。这种指数级增长的原因包括日益增长的监管要求、供应链问题以及全球化带来的业务关系的复杂性。此外&#xff0c;员工更频繁地换工作&#xff0c;因此&#xff0c;需要管理更…

Unity实用小工具—以对象形式操作Sqlite

一、介绍 1.1、版本说明&#xff1a;使用的Unity版本为个人版2020.3.39&#xff0c;数据库为Sqlite&#xff08;一个轻量级跨平台数据库&#xff09;&#xff0c;Sqlite的查看管理工具可以在网上下载https://dbeaver.io/download/&#xff0c;可以直接保存下来使用。 1.2、数…

微服务(四)——统一网关

目录1. 概念2. 实现网关1. 实现流程2. 小结3. 断言工厂4. 过滤器工厂1. GatewayFilter2. GlobalFilter3. 过滤器的执行顺序5. 解决跨域问题1. 概念 网关的作用&#xff1a; 认证、鉴权服务路由、负载均衡请求限流 网关的实现&#xff1a; gateway 基于Spring5中提供的WebFlu…

linux 设置登录提示语

勿以恶小而为之&#xff0c;勿以善小而不为---- 刘备 /etc/motd 文件里面 保存的是 登录后提示语 vim /etc/motd可以放置自定义的 文字信息 -------------------- 每天都要加油努力噢&#xff0c;岳泽霖!!! -------------------登录之后&#xff0c;就会展示信息: 参考链接: …

【Linux】Linux命令行git的使用

前进才是唯一的方向 文章目录一、git是什么&#xff1f;二、gitee仓库创建1.新建仓库2.复制仓库链接3.克隆远端仓库到本地来三、git提交代码1.下载git2. 配置用户名和邮箱&#xff08;否则git commit无法正常使用&#xff09;3. git提交代码三板斧3.1 git add&#xff08;将代…

git merge合并开发分支到上线分支遇到的问题,提示 no new changes

git merge 后 push 到 Gerrit 失败&#xff0c;提示 no new changes 解决思路&#xff1a; 分析&#xff1a;no new changes 的意思&#xff0c;是说&#xff0c;这个合并&#xff0c;是个线性的合并。而合并的那些历史的 commit 节点&#xff0c;在 gerrit 上都已经评审过了&…

在Linux中安装ShowDoc

在Linux中&#xff0c;有两种方式安装ShowDoc。第一种是自动脚本安装&#xff0c;第二种是手动安装。官方推荐使用自动脚本安装ShowDoc。如果自动脚本安装ShowDoc失败&#xff0c;可以考虑手动安装ShowDoc。 自动脚本安装ShowDoc 自动脚本利用docker来安装运行环境&#xff0…

酒鬼私定,只是酒鬼酒一次破圈营销?

围坐红泥小火炉&#xff0c;煮酒谈今夕。 过去一年多时间&#xff0c;经历了业绩向上&#xff0c;股市向下的反差时期后&#xff0c;越来越多人意识到白酒行业已步入存量时代。 2022年前三季度&#xff0c;中国规模以上白酒行业实现总产量487.9万千升&#xff0c;同比减少2.5…

proxychains for Windows

proxychains for Windows背景介绍项目地址使用scoop安装proxychains for windows验证命令行能否调用proxychains配置代理使用为Windows终端配置proxy--适用于cmd为Windows终端配置proxy--适用于PowerShellpowershell配置变量背景介绍 有时候Windows下的一些命令行程序想要挂代…

正大国际期货:外盘德指期货交易应该怎么做?

作为一个期货交易者&#xff0c;想要在市场上生存下来&#xff0c;就必须针对各种可能性都有所准备。比如&#xff0c;如果你强烈看涨&#xff0c;就必须准备好应对市场打你个冷不防的可能。相反&#xff0c;如果你对眼前的涨势高度怀疑&#xff0c;也不能彻底排除上演一场黑天…

ElasticSearch安装和部署和整合springboot

因为项目每次用到&#xff0c;每次重新搭都踩坑&#xff0c;特此记录一些坑&#xff0c;防止花费大量时间在搭建和整合上面安装 准备好压缩包elasticsearch-6.2.4解压 在config文件夹下配置文件elasticsearch.yml&#xff0c;可更改自行喜欢的端口和配置账号密码安装中文分词器…