强训之【井字棋和密码强度等级】

目录

  • 1.井字棋
    • 1.1题目
    • 1.2思路讲解
    • 1.3代码展示
  • 2.密码强度判断
    • 2.1题目
    • 2.2思路讲解
    • 2.3代码
  • 3.选择题

1.井字棋

1.1题目

链接: link
描述
给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。

测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true

1.2思路讲解

我们要判断玩家是否获胜,就要判断一行或一列或者斜线/反斜线是否都是1.
那就可以让数组一行/一列/斜线的数相加,判断和是否等于3,等于3意味着这一行/一列全是1,那么就玩家获胜

斜线的话我们就只需要判断,行列坐标都是i的情况
反斜线的话就需要判断行不变,列的话是从后往前的也就是board[i][board.length-1-i];

另外大家需要注意:每一个循环之前都需要将sum置为0。

在这里插入图片描述

1.3代码展示

import java.util.*;

public class Board {
    public boolean checkWon(int[][] board) {
        int sum = 0;
        for (int i = 0; i < board.length; i++) {
            sum=0;
            for (int j = 0; j < board[0].length; j++) {
                sum = sum + board[i][j];
            }
            if (sum == 3) {
                return true;
            }
        }
        for (int i = 0; i < board.length; i++) {
            sum=0;
            for (int j = 0; j < board[0].length; j++) {
                sum = sum + board[j][i];
            }
            if (sum == 3) {
                return true;
            }
        }

        sum=0;
        for (int i = 0; i < board.length; i++) {
            sum = sum + board[i][i];
        }
        if (sum == 3) {
            return true;
        }
        sum=0;
        for (int i = 0; i < board.length; i++) {
            sum = sum + board[i][board.length-1-i];
        }
        if (sum == 3) {
            return true;
        }
        return false;
    }
}

2.密码强度判断

2.1题目

链接: link
描述
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符

二、字母:
0 分: 没有字母
10 分: 密码里的字母全都是小(大)写字母
20 分: 密码里的字母符合”大小写混合“

三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字

四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号

五、奖励(只能选符合最多的那一种奖励):
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号

最后的评分标准:
= 90: 非常安全
= 80: 安全(Secure)
= 70: 非常强
= 60: 强(Strong)
= 50: 一般(Average)
= 25: 弱(Weak)
= 0: 非常弱(Very_Weak)

对应输出为:

VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK

请根据输入的密码字符串,进行安全评定。

注:
字母:a-z, A-Z
数字:0-9
符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
!"#$%&'()*+,-./ (ASCII码:0x21~0x2F)
:;<=>?@ (ASCII码:0x3A~0x40)
[]^_` (ASCII码:0x5B~0x60)
{|}~ (ASCII码:0x7B~0x7E)

提示:
1 <= 字符串的长度<= 300
输入描述:
输入一个string的密码

输出描述:
输出密码等级

示例1
输入:
38$@NoNoN

输出:
VERY_SECURE

说明:
样例的密码长度大于等于8个字符,得25分;大小写字母都有所以得20分;有两个数字,所以得20分;包含大于1符号,所以得25分;由于该密码包含大小写字母、数字和符号,所以奖励部分得5分,经统计得该密码的密码强度为25+20+20+25+5=95分。

示例2
输入:
Jl)M:+

输出:
AVERAGE

说明:
示例2的密码强度为10+20+0+25+0=55分。

2.2思路讲解

我们只需要判断是否符合条件,然后再将符合条件的值加起来,判断在哪个区间就可以了。
1.我们先判断字符串的长度,很简单就不多说了
2.字母,我们判断条条件为,定义两个变量,count1和count2,如果出现小写字母(该下标的字母ASCII在‘a’-‘z’之间就是小写字母),count1++,反之如果出现大写字母(该下标的字母ASCII在‘A’-‘Z’之间就是大写字母),count2++.然后判断count1和count2是否为0,如果都为0,没有字母,有一个就全是小写/大写的,全都不为0,就是混合的字母。
3.数字,这个也是一样,判断字符是否处于‘0’-‘9’之间,有的话count3++,最后判断count3的数量
4一样判字符是否处于符号的ASCII之间,不过这个符号的区间不是连续的所以需要用上 ||,这个逻辑运算符,(ch[i] >= 0x21 && ch[i] <= 0x2F || ch[i] >= 0x3A && ch[i] <= 0x40|| ch[i] >= 0x5B && ch[i] <= 0x60 || ch[i] >= 0x7B && ch[i] <= 0x7E )
5.最后判断 都有哪些
字母和数字
字母、数字和符号
大小写字母、数字和符号

2.3代码

import java.util.Scanner;

public class Main {

    public static int score(String str) {
        char[] ch = str.toCharArray();
        int sum = 0;
        int len = ch.length;
        //计算长度
        if (len <= 4) {
            sum += 5;
        } else if (len >= 5 && len <= 7) {
            sum += 10;
        } else {
            sum += 25;
        }
        //计算数字
        int count = 0;
        for (int i = 0; i < len; i++) {
            if (ch[i] >= '0' && ch[i] <= '9') {
                count++;
            }
        }
        if (count == 0) {
            sum += 0;
        } else if (count == 1) {
            sum += 10;
        } else {
            sum += 20;
        }
        //计算字母
        int count1 = 0;
        int count2 = 0;
        for (int i = 0; i < len; i++) {
            if (ch[i] >= 'a' && ch[i] <= 'z' ) {
                count1++;//小写字母
            } else if (ch[i] >= 'A' && ch[i] <= 'Z') {
                count2++;//大写的
            }
        }
        if (count1 == 0 && count2 == 0) {
            sum += 0;
        } else if (count1 != 0 && count2 != 0 ) {
            sum += 20;
        } else {
            sum += 10;
        }

        //计算符号
        int count3 = 0;
        for (int i = 0; i < len; i++) {
            if (ch[i] >= 0x21 && ch[i] <= 0x2F || ch[i] >= 0x3A && ch[i] <= 0x40
                    || ch[i] >= 0x5B && ch[i] <= 0x60  || ch[i] >= 0x7B && ch[i] <= 0x7E ) {
                count3++;
            }
        }
        if (count3 == 0) {
            sum += 0;
        } else if (count3 == 1) {
            sum += 10;
        } else {
            sum += 25;
        }
        //奖励


        if ((count1 > 0 && count2 > 0) && count > 0 && count3 > 0) {
            sum += 5;
        } else if (count > 0 && (count1 != 0 || count2 != 0) && count3 > 0) {
            sum += 3;
        } else if (count > 0 && (count1 != 0 || count2 != 0)) {
            sum += 2;
        }

        return sum;

    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int sum = score(str);
        if (sum >= 90) {
            System.out.println("VERY_SECURE");
        } else if (sum >= 80 && sum < 90) {
            System.out.println("SECURE");
        } else if (sum >= 70 && sum < 80) {
            System.out.println("VERY_STRONG");
        } else if (sum >= 60 && sum < 70) {
            System.out.println("STRONG");
        } else if (sum >= 50 && sum < 60) {
            System.out.println("AVERAGE");
        } else if (sum >= 25 && sum < 50) {
            System.out.println("WEAK");
        } else {
            System.out.println("VERY_WEAK");
        }

    }
}

3.选择题

  1. 下列运算符合法的是(A
    A &&
    B <>
    C if
    D :=

<>这是这个是定义泛型的
if判断语句的关键字

2.下面代码运行结果是(C

public class Test{
public int add(int a,int b){
  try {
         return a+b;
     }
  catch (Exception e) {
  System.out.println("catch语句块");
}
  finally{
   System.out.println("finally语句块");
}
    return 0;
}
  public static void main(String argv[]){
  Test test =new Test();
  System.out.println("和是:"+test.add(9, 34));
  }
}

A catch语句块 和是:43
B 编译异常
C finally语句块 和是:43
D 和是:43 finally语句块

我们调用的是add方法,返回值是43,但是没有产生异常就不会执行catch语句,不过会执行finally语句,因为finally语句始终会被执行。
所以先输出finally语句的内容,在输出值

3.下列Java代码中的变量a、b、c分别在内存的____存储区存放。(C
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
A 堆区、堆区、堆区
B 堆区、栈区、堆区
C 堆区、栈区、栈区
D 堆区、堆区、栈区
E 静态区、栈区、堆区
F 静态区、栈区、栈区

类对象都是在堆区上的,因为b和c都是局部变量,因此在栈区上

  1. 以下声明合法的是(B
    A default String s
    B public final static native int w( )
    C abstract double d
    D abstract final double hyperbolicCosine( )

default不是权限修饰符
final修饰的不能被重写,但是接口就是来被继承重写,所以不能一起使用

  1. 在使用super 和this关键字时,以下描述正确的是(A
    A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一
    行,否则编译不通过
    B super()和this()不一定要放在构造方法内第一行
    C this()和super()可以同时出现在一个构造函数中
    D this()和super()可以在static环境中使用,包括static方法和static语句块

构造方法中,this和supper都必须在第一行,因此不能同时出现,并且不能再static环境中使用。

6.下面代码的输出结果是什么?(D
public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A 3
B 123
C 1
D 12

因为0不能当被除数,所以会报错,因此先执行catch语句,输出1,并且抛出异常,但是后面还有finally语句,所以会先执行完finally语句,输出2,在抛出异常,然后就输

7.关于下面代码片段叙述正确的是(C
有代码片段如下:
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常

原本b1 和b2是byte类型的,但是赋值给·int类型,所以b1和b2就变为int类型的但是b3还是byte类型的,所以b3=(b1+b2);报错

8.以下java程序代码,执行后的结果是(A
public class Test {
public static void main(String[] args) {
Object o = new Object() {
public boolean equals(Object obj) {
return true;
}
};
System.out.println(o.equals(“Fred”));
A Fred
B true
C 编译错误
D 运行时抛出异常
}
}

Object是所有类的父类,重写了equals方法,直接返回true。

9.执行以下程序后的输出结果是(D
public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer(“A”);
StringBuffer b = new StringBuffer(“B”);
operator(a, b);
System.out.println(a + “,” + b);
}
public static void operator(StringBuffer x, StringBuffer y) {
x.append(y); y = x;
}
}
在这里插入图片描述
在这里插入图片描述

10.下面所示的java代码,运行时,会产生()类型的异常(D
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);

A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsException

数组越界异常,一共长度为10,下表为0-9

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

禅道OpenAI更新至1.2版本,超多实用功能惊喜上线!

广受欢迎的禅道OpenAI插件近日成功发布&#xff0c;截至目前已更新至1.2版本。 截至本版本发布&#xff0c;禅道OpenAI已经拥有了神奇海螺&#xff08;ChatGPT聊天&#xff09;、需求润色、任务润色、Bug润色及本次的需求一键生成用例功能&#xff0c;仍有更多实用的新功能正在…

计算机视觉__基本图像操作(显示、读取、保存)

计算机视觉__基本图像操作&#xff08;显示、读取、保存&#xff09; 本文目录&#xff1a; ✨ 一、前言 ✨ 二、图像显示&#xff08;使用OpenCV和Matplotlib显示图像&#xff09; &#xff08;1&#xff09;、使用OpenCV显示图像 &#xff08;2&#xff09;、使用Matplotl…

电磁兼容(EMC)的标准与测试内容

在国际范围上&#xff0c;电磁兼容标准的制定已经有了70多年的发展历程&#xff0c;最早为了保护无线电通信和广播&#xff0c;国际无线电干扰特别委员会&#xff08;CISPR&#xff09;对各种用电设备和系统提出了相关的电磁干扰发射限值和测量方法。到了20世纪60&#xff5e;7…

被裁了,39 岁阿里 P9,攒下 1.5 亿....

今天刷知乎&#xff0c;在问题 “40 岁因为财务自由决定不上班的人&#xff0c;个人资产总和到底有多少” 下看到一位阿里 P9 的匿名回答让我狠狠的酸了一把~ 这刚刚失业的四十岁高级码农自曝了自己的人生经历&#xff0c;作为一名“阿里 P9”的程序员&#xff0c;他讲述了自己…

聚观早报|阿里云正式推出通义千问;京东零售开启5年最大组织变革

今日要闻&#xff1a;国家网信办规范生成式人工智能服务&#xff1b;阿里云正式推出通义千问&#xff1b;京东零售开启5年来最大组织变革&#xff1b;飞书将推出智能AI助手「My AI」&#xff1b;乐高将继续扩大在华零售布局 国家网信办规范生成式人工智能服务 4 月 11 日&…

redis——使用

session缓存缓存更新方式删除缓存vs更新缓存缓存和数据库操作原子性缓存和数据库操作顺序结论 缓存问题缓存穿透缓存雪崩缓存击穿 全局唯一ID数据并发线程安全单体分布式redis分布式锁的问题 redis消息队列listpubsubstream 消息推送 session 问题&#xff1a;session存在tomca…

nginx简单使用与配置

nginx简单使用与配置 Nginx 是一个高性能的HTTP和反向代理web服务器、一个邮件代理服务器&#xff0c;一个通用的 TCP/UDP 代理服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。 前端可以通过nginx实现以下功能&#xff1a…

DAY 34 正则表达式

正则表达式 REGEXP&#xff1a; Regular Expressions&#xff0c;由一类特殊字符及文本字符所编写的模式&#xff0c; 其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c; 类似于增强版的通配符功能&#xff0c;但…

Linux--tty

Linux 终端(TTY) TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设…

【面试】你在项目中遇到过慢查询问题吗?你是怎么做SQL优化的?

文章目录 前言一、找出有问题的SQL1、系统层面2、SQL语句层面 二、查看SQL执行计划三、SQL优化案例慢查询优化步骤 SQL优化小结 前言 我在面试的时候很喜欢问候选人这样一个问题&#xff1a;“你在项目中遇到过慢查询问题吗&#xff1f;你是怎么做SQL优化的&#xff1f;” 很多…

基于DSP+FPGA的多轴运动控制平台(一)硬件设计

2 实验平台总体方案与硬件设计 2.1.1 实验平台的功能需求分析 针对便于多轴运动控制技术的研究&#xff0c;培养此方面技术的人才&#xff0c;实验平台应能 对多轴运动实现高速高精度的控制效果&#xff0c;同时保证系统开放性和兼容多种算法及 参数的运行。 实验过程契合…

TCP/IP协议及配置

文章目录 一、TCP/IP概述1. TCP/IP协议族2. 主机与主机之间通信的三个要素 二、什么是IP地址1. 用来标识一个网络节点的互联网地址&#xff08;如同电话的号码&#xff09;2. IPv4地址组成 三、IP地址分类1. 常用的IP地址2. 组播及科研专用 四、IP地址分类&#xff08;续&#…

wait 和 notify

wait 和 notify 7. wait 和 notify7.1 wait()方法7.2 notify()方法★★★wait和notify代码wait 需要搭配 synchronized 7.3 notifyAll()方法7.4 wait 和 sleep 的对比&#xff08;面试题&#xff09; 7. wait 和 notify 保证其他线程可以正常进行 由于线程之间是抢占式执行的, …

为什么你这么累,销量还不如那些轻松工作的同行?

管理混乱 忙碌却不见成效 在工业品行业做了10多年的小张&#xff0c;最近向我吐槽&#xff1a;每天忙得团团转&#xff0c;结果销售业绩还不如那些整天轻松工作的同行。几番沟通下来&#xff0c;发现小张每天要做这么多的工作&#xff0c;不忙才怪&#xff01; 管理员工&#x…

系统安全及应用

目录 一、账号安全控制 1&#xff09;系统账号清理 2&#xff09;密码安全控制 chage命令 示例 3&#xff09;命令历史限制 4&#xff09;终端自动注销 总结 账号安全 密码安全 二、系统引导和登录控制 1&#xff09;使用su命令切换用户 用途及用…

生产管理系统是什么?它有哪些功能模块?

阅读本文您将了解&#xff1a;1.企业生产管理的问题&#xff1b;2.生产管理系统模块有哪些&#xff1b;3.如何利用生产管理系统模块解决问题。 一、企业生产管理会遇到哪些问题&#xff1f; 生产管理是有计划、组织、指挥、监督调节的生产活动。以最少的资源损耗&#xff0c;…

风电的Weibull分布及光电的Beta分布组合研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

九龙证券|服务器龙头获资金连续抢筹,尾盘主力抢筹前期大热门股

今天&#xff0c;核算机职业取得主力大手笔抢筹。 今天主力资金净流出53.89亿元&#xff0c;其间创业板净流出3.19亿元&#xff0c;沪深300成份股净流出7.61亿元。 申万一级职业中&#xff0c;今天有19个职业上涨&#xff0c;传媒职业接连两日均涨近5%&#xff0c;居首位&…

OA系统的功能和作用是什么(OA系统百科)

OA系统的功能和作用是什么&#xff08;OA系统百科&#xff09;。OA系统是一种非常实用的企业内部管理系统&#xff0c;它可以帮助公司实现各项管理工作&#xff0c;可以说是整个公司和团队的纽带&#xff0c;有助于提高工作效率和管理水平。 具体来说&#xff0c;OA系统的作用…

换电脑 NoteExpress 数据备份迁移

前言 主要操作是跟着这篇博客做的&#xff1a;NoteExpress数据库备份和转移。但也有一些不一样的地方 旧电脑NoteExpress(NE)版本3.7&#xff0c;新电脑版本3.8 旧电脑 导出配置文件 桌面找到图标&#xff0c;打开位置&#xff0c;点击配置备份&#xff08;绿色的图标&#…