码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 刷题笔记之五(走方格的方案数+手套+井字棋+密码强度等级)


    目录

    1. toUpperCase和replace创建新的字符串进行修改

    2. new出来的对象都是在堆中的

    3. static修饰的方法,不需要对象也可以调用

    4. 在使用==和equals要注意看有没有自动拆箱的情况

    5. 走方格的方案数

    6. 手套

    7.  全局变量在堆中,局部变量在栈中

    8. abstract只能修饰类或方法,不能和final同时用

    9. 出现异常会执行catch中的语句,finally不论异常有没有都会执行,出现异常后面的语句都不能正常往下执行

    10. 在运算时注意类型转化问题,final修饰基本类型值不改变

    11. 匿名内部类中重写equals方法

    12. 注意数组下标表示范围,防止数组下标越界

    13. 井字棋

    14. 密码强度等级


    1. toUpperCase和replace创建新的字符串进行修改

     这道题选D  ,首先要明确的是toUpperCase将字母小写转为大写,非字母的字符不受影响

    最重要的是toUpperCase修改字母不是在原字符串上修改,而是创建新的字符串进行修改

    replace也是一样,没有修改本身字符串,而是创建新的字符串进行字符替换


    2. new出来的对象都是在堆中的

     创建数组时是new出来的(比如 int[] a = new int[])

    而new出来的对象都是在堆中的,所以D选项错误,数组是分配在堆中的


    3. static修饰的方法,不需要对象也可以调用

     首先看到testMethod方法被static修饰,所以这个方法属于类本身

    即使不new对象也可以直接调用,所以这里有没有null转为TestClass都不影响调用testMethod方法

    所以运行正常,打印出testMethod,选F


    4. 在使用==和equals要注意看有没有自动拆箱的情况

     == 在基本类型中比较的是值,而在引用类型中比较的是地址

    这道题中 i 为基本数据类型,而j是引用数据类型,但在这里发生了自动拆箱

    所以这里比较的是值 ,第一个打印true

    同样equals没有重写的话也是和==一样的效果,所以第二个也是打印true,选B


    5. 走方格的方案数

    题目链接:走方格的方案数_牛客题霸_牛客网 (nowcoder.com)

    题目要求:

    题目分析:

     上代码

    1. import java.util.Scanner;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner scan = new Scanner(System.in);
    5. while(scan.hasNext()) {
    6. int n = scan.nextInt();
    7. int m = scan.nextInt();
    8. System.out.println(med(n,m));
    9. }
    10. }
    11. private static int med(int n,int m) {
    12. //m==1 或 n==1
    13. if((n==1 && m >= 1) || (n >= 1 && m == 1)) {
    14. return m+n;
    15. }
    16. //n>1 && m>1
    17. return med(n-1,m) + med(n,m-1);
    18. }
    19. }

    6. 手套

    题目链接:手套_牛客题霸_牛客网 (nowcoder.com)

    题目要求:

     题目分析:

    上代码

    1. import java.util.*;
    2. public class Gloves {
    3. public static int findMinimum(int n, int[] left, int[] right) {
    4. int leftSum = 0;
    5. int rightSum = 0;
    6. int leftMin = Integer.MAX_VALUE;
    7. int rightMin = Integer.MAX_VALUE;
    8. int sum = 0;
    9. for (int i = 0; i < n; i++) {
    10. //先判断左手或右手手套出现0的情况
    11. if(left[i] * right[i] == 0) {
    12. sum += left[i] + right[i];
    13. }else {
    14. leftSum += left[i];
    15. rightSum += right[i];
    16. if(leftMin > left[i]) {
    17. leftMin = left[i];
    18. }
    19. if(rightMin > right[i]) {
    20. rightMin = right[i];
    21. }
    22. }
    23. }
    24. return sum + Math.min((leftSum-leftMin+1) , (rightSum-rightMin+1)) + 1;
    25. }
    26. }

    7.  全局变量在堆中,局部变量在栈中

     


    8. abstract只能修饰类或方法,不能和final同时用

     A,default 虽然是权限修饰符,但是default只能用于接口的方法和属性中,并且使用default修饰接口方法就必须要实现这个方法

    C,变量是不能够被abstract修饰的,abstract可以用来修饰类或方法

    D,这个方法被abstract和final修饰,被final修饰方法是不能够被重写的

    被abstract修饰的方法是要被子类重写的,这个就很矛盾了,所以D错


    9. 出现异常会执行catch中的语句,finally不论异常有没有都会执行,出现异常后面的语句都不能正常往下执行


    10. 在运算时注意类型转化问题,final修饰基本类型值不改变


    11. 匿名内部类中重写equals方法


    12. 注意数组下标表示范围,防止数组下标越界

    new创建数组的大小为10,那么对应数组下标就是 0-9,数组下标最大是9

    而这里想打印的数组Arry_a[10]导致数组下标越界,所以选D


    13. 井字棋

    题目链接:井字棋_牛客题霸_牛客网 (nowcoder.com)

    题目要求:

     题目分析:

     上代码

    1. import java.util.*;
    2. public class Board {
    3. public boolean checkWon(int[][] board) {
    4. for (int i = 0; i <= 2; i++) {
    5. if(board[i][0] + board[i][1] + board[i][2] == 3) {
    6. return true;
    7. }
    8. }
    9. for (int j = 0; j <= 2; j++) {
    10. if(board[0][j] + board[1][j] + board[2][j] == 3) {
    11. return true;
    12. }
    13. }
    14. if(board[0][0] + board[1][1] + board[2][2] == 3) {
    15. return true;
    16. }else if(board[0][2] + board[1][1] + board[2][0] == 3) {
    17. return true;
    18. }
    19. return false;
    20. }
    21. }

    14. 密码强度等级

    题目链接:密码强度等级_牛客题霸_牛客网 (nowcoder.com)

    题目要求:

     

    上代码

    1. import java.util.Scanner;
    2. // 注意类名必须为 Main, 不要有任何 package xxx 信息
    3. public class Main {
    4. public static void main(String[] arg) {
    5. Scanner scan = new Scanner(System.in);
    6. String str = scan.nextLine();
    7. char[] array = str.toCharArray();
    8. //1.密码长度
    9. int sum = 0;
    10. if(array.length <= 4) {
    11. sum = 5;
    12. }else if(array.length >= 8) {
    13. sum = 25;
    14. }else {
    15. sum = 10;
    16. }
    17. //2.字母
    18. int daxie = 0,xiaoxie = 0;
    19. for(int i = 0; i < array.length; i++) {
    20. if(array[i] >= 'A' && array[i] <= 'Z') {
    21. daxie++;
    22. }else if(array[i] >= 'a' && array[i] <= 'z') {
    23. xiaoxie++;
    24. }
    25. }
    26. if((daxie+xiaoxie) == 0) {
    27. sum += 0;
    28. }else if((daxie>0 && xiaoxie == 0) || (daxie == 0 &&xiaoxie >0)) {
    29. sum += 10;
    30. }else{
    31. sum += 20;
    32. }
    33. //3.数字
    34. int shuzi = 0;
    35. for(int i = 0; i< array.length; i++) {
    36. if(array[i] >= '0' && array[i] <= '9') {
    37. shuzi++;
    38. }
    39. }
    40. if(shuzi == 0) {
    41. sum += 0;
    42. }else if(shuzi == 1) {
    43. sum += 10;
    44. }else {
    45. sum += 20;
    46. }
    47. //4.符号
    48. int fuhao = 0;
    49. for(int i = 0; i < array.length; i++) {
    50. if((array[i] >= '!' && array[i] <= '/') ||
    51. (array[i] >= ':' && array[i] <= '@') ||
    52. (array[i] >= '[' && array[i] <= '`') ||
    53. (array[i] >= '{' && array[i] <= '~')) {
    54. fuhao++;
    55. }
    56. }
    57. if(fuhao == 0) {
    58. sum += 0;
    59. }else if(fuhao == 1) {
    60. sum += 10;
    61. }else {
    62. sum += 25;
    63. }
    64. //5.奖励
    65. if((daxie> 0 && xiaoxie > 0) && (shuzi != 0) && (fuhao != 0)) {
    66. sum += 5;
    67. }else if(((daxie+xiaoxie) > 0) && (shuzi != 0) && (fuhao != 0)) {
    68. sum += 3;
    69. }else if(((daxie+xiaoxie) != 0) && (shuzi != 0) && (fuhao == 0)) {
    70. sum += 2;
    71. }
    72. //评分标准
    73. if(sum >= 90) {
    74. System.out.println("VERY_SECURE");
    75. }else if(sum < 90 && sum >= 80) {
    76. System.out.println("SECURE");
    77. }else if(sum < 80 && sum >= 70 ) {
    78. System.out.println("VERY_STRONG");
    79. }else if(sum < 70 && sum >= 60) {
    80. System.out.println("STRONG");
    81. }else if(sum < 60 && sum >= 50) {
    82. System.out.println("AVERAGE");
    83. }else if(sum < 50 && sum >= 25) {
    84. System.out.println("WEAK");
    85. }else {
    86. System.out.println("VERY_WEAK");
    87. }
    88. }
    89. }

  • 相关阅读:
    qt Rectangle 使用Gradient设置渐变方向 制作渐变进度条
    构建白平衡色温坐标系
    ps2021没法用神经元滤镜,ps2021神经滤镜不能下载
    go语言学习之旅之Go语言基础语法二
    JTS:11 Overlaps 部分重叠
    ROS2对比ROS1的一些变化与优势(全新安装ROS2以及编译错误处理)《1》
    VsCode SSH远程设置不用重复输入密码
    网页制作课作业简单的学生网页作业源码 基于html css javascript jquery仿慕课网教学培训网站设计实例 企业网站制作
    [ Linux ] 文件描述符和重定向
    Spring MVC 六 - DispatcherServlet处理请求过程
  • 原文地址:https://blog.csdn.net/m0_58761900/article/details/127514619
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号