【强训】Day05

news2024/11/24 11:39:43

努力经营当下,直至未来明朗!

文章目录

  • 一、选择
  • 二、编程
    • 1. 统计回文
    • :sparkles: 2. 连续最大和[dp]
  • 答案
    • 1. 选择
    • 2. 编程


普通小孩也要热爱生活!

一、选择

  1. 下面的程序 编译运行后,在屏幕上显示的结果是()
public class Test {

    public static void main(String args[]) {
        int x, y;
        x = 5 >> 2;
        y = x >>> 2;
        System.out.println(y);
    }
}

A 0
B 2
C 5
D 80

  1. 以下代码的输出结果是()
public class foo {
    public static void main(String sgf[]) {

        StringBuffer a=new StringBuffer("A");

        StringBuffer b=new StringBuffer("B");

        operate(a,b);

        System.out.println(a+"."+b);
    }
    static void operate(StringBuffer x,StringBuffer y) {
        x.append(y);
        y=x;
    }
}

A 代码可以编译运行,输出“AB.AB”。
B 代码可以编译运行,输出“A.A”。
C 代码可以编译运行,输出“AB.B”。
D 代码可以编译运行,输出“A.B”。

  1. 在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()

A this.A(x)
B this(x)
C super(x)
D A(x)

  1. 在java7中,下列不能做switch()的参数类型是?

A int型
B 枚举类型
C 字符串
D 浮点型

  1. 指出以下程序运行的结果是()
 //指出以下程序运行的结果是
 public class Example{
     String str=new String("good");
     char[]ch={'a','b','c'};
      public static void main(String args[]){
          Example ex=new Example();
          ex.change(ex.str,ex.ch);
          System.out.print(ex.str+" and ");
          System.out.print(ex.ch);
      }
      public void change(String str,char ch[]){
          str="test ok";
          ch[0]='g';
      }
  }
 

A good and abc
B good and gbc
C test ok and abc
D test ok and gbc

  1. 下列有关JAVA异常处理的叙述中正确的是()

A finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D throw是用来明确地抛出一个异常情况


二、编程

1. 统计回文

统计回文
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。


✨ 2. 连续最大和[dp]

连续最大和
一个数组有 N 个元素,求连续子数组的最大和
例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3。


答案

1. 选择

  1. ① >> 代表带有符号右移,当操作的数为负数时,右移后,高位补1;当操作的数为整数时,右移后,高位补0。
    ② >>> 代表无符号右移,不管正负数,右移后,高位都是补0。
    ③ >>:每右移一位就相当于除以2; <<:每左移一位就相当于乘以2(左移无有无符号之分)

so
① 5>>2, 5的二进制为 0000 0000 0000 0101 ,右移2位,即: 0000 0000 0000 0001( 高位补0)
② x>>>2, 即上面的结果,再右移2位,结果就成了 0000 0000 0000 0000,所以最终的结果是0。

故:选A

  1. 一定要画图!注意指向
    1

故:选C

  1. ① this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数)
    ② super是调用父类的方法;
    ③ A(a)这种形式是在new一个类时使用 or 在本类中静态方法调用。

A. this.A(x);这是调用普通方法的写法
C. super(x);此时显示调用父类构造方法
D. A(x); 调用该类中的静态方法

故:选B

  1. switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型不能是float,double和boolean类型String类型是java7开始支持

故:选D

  1. 只要涉及传参问题(尤其是引用类型),不确定时一定要画图!
    2

故:选B

  1. ① 运行时异常:非受查异常,RunTimeException以及其子类对应的异常,都称为运行时异常。比如:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException等
    ② 编译时异常:受查异常,一定要进行异常申明!!
    ③ final用于可以声明属性和方法,分别表示属性的不可变及方法的不可覆盖不是方法的不可继承!!!

故:选ABD

  1. java中局部变量必须初始化,否则会报错!!(编译无法通过)
    ② 对引用变量的默认初始化均初始化为null。

  2. ① 标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。
    ② 注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写


2. 编程

  1. 统计回文
    1)思路:
    ① 回文串也就是前后对称的字符串。
    ② 直接使用暴力求解方式计算即可:

遍历str1,将str2 insert进入str1的每个位置,判断是否是回文,这里注意的是,判断回文的时候,直接将字符串逆置,看是否相同就好了。是就++count。
② 需要注意的是这里不能 str1.insert(i,str2),这样的话str1改变了,在进行下一次操作时就不再是原来的字符串了。所以每次使用str1重新给一个str作为临时变量,然后str.insert(i, str2),再判断是否回文。
③ 注意:这里临时变量str是要进行字符串插入拼接的,所以直接使用StringBuffer类型就行!其中的insert方法是自带的,第一个参数是插入的起始位置,第二个参数是要插入的字符串。
④ 最后是判断插入后的字符串是不是回文字符串,所以在进行逆置的时候不能直接逆置,不然后期在进行比较的时候原来的字符串就会丢失,此时就需要一个临时变量来进行逆置操作。(逆置方法reverse是StringBuffer自带的)
⑤ 判断两个字符串是否相等使用equals,但是要toString!!

2)代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();
        String str2 = in.nextLine();
        // 开始进行回文判断
        int count = palindrome(str1,str2);
        System.out.println(count);
    }

    // 回文统计:
    // 将str2插入str1的每一个位置(但是str1要有临时变量来代替)
    private static int palindrome(String str1, String str2) {
        int count = 0;

        int len = str1.length();
        // 注意这里前后都可以取到:前后都可以插入!
        for (int i = 0; i <= len; i++) {
            // 每一次遍历代表每一次插入不同的位置,也就是每次都要有最开始传入的str1
            // 每插入一次就进行一次逆置+判断

            StringBuffer str = new StringBuffer(str1);
            // 然后进行插入
            str.insert(i,str2);
            // 逆置,但是不能直接逆置,因为直接逆置之后str本身会改变
            // 后面在进行回文串判断时比较的就是str与逆置后的字符串,所以这里需要一个临时变量进行逆置操作!
            StringBuffer tmp = new StringBuffer(str); // 注意这里创建方法,不是直接=str!
            tmp.reverse();
            // 进行回文判断:使用String判断!
            if(str.toString().equals(tmp.toString())) {
                count++;
            }
        }
        return count;
    }
}


  1. 连续最大和
    这是一个经典的动归dp问题。
    1)思路:

状态:dp[i] 就是以数组下标为 i 的数做为结尾的最大子序列和,其代表的数组其实就是[0,i]这个范围内的元素。
状态方程max( dp[ i ] ) = getMax( max( dp[ i -1 ] ) + arr[ i ] ,arr[ i ] ) ,其实意思就是:如果dp[i-1] +arr[i] <
arr[i],那就是前面的数组元素和反而是拖累了后面的元素arr[i],此时就更新当前最大值为arr[i] ;然后还要与此前记录的最大值比较来确定最终的最大值,一直到数组结束。
初始值:arr[0],所以循环从arr[1]开始,并且有sum和max!!

2)代码:

import java.util.Scanner;

// 正确版本
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }

        // 开始进行练习子数组求max
        int sum = arr[0];
        int max = arr[0];

        for (int i = 1; i < arr.length; i++) {
            // 更新sum的值,注意不是max,只有在比较厚才能确定max!
            sum = getMax(sum+arr[i],arr[i]);
            if(sum >= max) { // 大于等于都可以更新
                max = sum;
            }
        }

        System.out.println(max);
    }

    // 获取两个数中的较大值
    private static int getMax(int i, int j) {
        return (i>j)? i:j;
    }


}

yy

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

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

相关文章

LWIP(二)——LWIP有3种编程接口,RAW、NETCONN和SOCKET

目录 1. RAW 2. NETCONN 3、SOCKET LWIP有3种编程接口&#xff0c;RAW、NETCONN和SOCKET。它们的易用性从左到右依次提高&#xff0c;而执行效率从左到右依次降低&#xff0c;用户可以根据实际情况&#xff0c;平衡利弊&#xff0c;选择合适的 API 进行网络应用程序的开发。…

性价比高的香港物理服务器怎么选用?

​  从事跨境业务&#xff0c;对于网络流量大且速度、安全网络要求高的企业&#xff0c;通常建议选用香港物理服务器。物理服务器以非共享方式租给一个特定的客户&#xff0c;比较满足一些企业的高要求。当然&#xff0c;在进行比较并选择性价比高的香港物理服务器时&#xf…

Flink 知识点整理及八股文问题<第二、三部分 Flink快速上手和部署>

本篇为Flink的第二、三部分&#xff0c;Flink快速上手和Flink部署&#xff0c;全篇参考自 尚硅谷2022版1.13系列 整个系列的目录如下&#xff1a; &#x1f49a;<一>Flink简介 &#x1f49a;<二>Flink快速上手 &#x1f49a;<三>Flink 部署 &#x1f49a;&l…

Revit标注墙偏移如何简便标注呢?万能标注?

一、Revit标注墙偏移如何简便标注呢? 1、如果墙定位线是核心层中心线&#xff0c;现在要标注墙偏移如何简便标注呢? 遇到上述问题大家可能想到的办法是用TAB键去选择墙的内外边缘。其实有更简便的方法&#xff0c;如图1所示。 红色框选部分是选项栏&#xff0c;当使用对齐尺寸…

JDBC高级——主键回显、批量插入、事务操作

自增主键回显 一般在插入数据时&#xff0c;设置主键为自增&#xff0c;然后我们就不用去维护这个主键值&#xff0c;其他的级联表可能以这个主键作为外键或参考&#xff0c;所以我们要拿到插入数据的主键值&#xff0c;这就是主键回显。 如何获取数据库自增的主键值&#xff…

自己写一个简单的工作流引擎V2

上一篇文中我们实现了顺序的工作流&#xff0c;对于多分支的工作流如下&#xff0c;该如何实现呢&#xff1f; 小明提交了一个申请单&#xff0c;然后经过经理审批&#xff0c;如果通过&#xff0c;发邮件通知&#xff0c;不通过&#xff0c;则打回重新填写申请单&#xff0c;…

计算机体系结构 | 函数栈帧 | 栈帧的创建与销毁讲解 | 篡改函数的返回地址

文章目录前言预备知识demo及其汇编代码汇编代码讲解返回值篡改&#xff08;111 ???&#xff09;前言 复习时遇到一些问题&#xff0c;可能是关于左值右值的概念理解不够透彻&#xff0c;于是转头去研究左值右值的问题&#xff0c;但是想要参透左右值&#xff0c;我又觉得需…

通信网络概论

一、通信网络概述 通信网络是一些设备、设施组成的集合&#xff0c;可以提供特定的服务&#xff0c;即可以实现位于任意地点的不同用户间信息的传递。 通信网络的基本问题&#xff1a;如何以尽可能低的成本有效地解决处于任何地理位置的任意两个用户之间即时信息传递问题&…

基于java springmvc+mybatis学生考试系统设计和实现

基于java springmvcmybatis学生考试系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

公司选择之外包

前言 简单介绍下人们常说的外包是什么&#xff0c;应届生未出社会没有经验&#xff0c;避免求职过程中的一些坑。 文章目录前言一、什么是外包&#xff1f;1、简介1、项目外包2、人力外包二、外包公司有哪些&#xff1f;三、优缺点1、优点2、缺点四、选择一、什么是外包&#x…

FreeRTOS的Systick和HAL时基

目录 分析 举个例子&#xff1a; 正确的做法&#xff1a; 总结 我们首先需要知道&#xff0c;使用了FreeRTOS会强制使用systick作为自己的心跳&#xff0c;这个os_tick的优先级是最低的&#xff0c;它主要的作用就是OS任务调度&#xff0c;时间片查询等工作。 在图中&#x…

【未解决乌龟问题】测试ROS是否安装成功

前提说明&#xff1a;虚拟机、ubuntu-18.04.1 1、操作流程&#xff1a; 1&#xff09;参考教程链接1&#xff0c;第一步输入roscore指令查看ROS的版本、节点、端号等内容时出现“Command roscore not found, but can be installed with: sudo apt install python-roslaunch”…

python-docx写入word

目录 字体大小参照 安装python-docx 引入依赖包 使用 标题设置字体、字号、居中、加粗、颜色 正文设置字体、字号、居中、加粗、颜色 添加图片 官方文档 字体大小参照 字号‘八号’对应磅值5 字号‘七号’对应磅值5.5 字号‘小六’对应磅值6.5 字号‘六号’对应磅值7.…

Java8-19新特性一览 ,认识全新的前沿技术

文章目录Java8-19新特性一览 ,认识全新的前沿技术前言你的收获Java发展趋势准备工作新特性1、接口private1&#xff09;、说明2&#xff09;、案例3&#xff09;、注意2、类型推断1&#xff09;、说明2&#xff09;、案例3&#xff09;、注意3、空指针优化1&#xff09;、说明2…

【5】SCI易中期刊推荐——计算机科学(中科院2区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…

阿里云k8s一键部署有状态StatefulSet nacos2.0.3

阿里云k8s一键部署有状态StatefulSet nacos2.0.3 项目目录 centos 配置连接集群 kubectl 客户端执行k8s脚本 kubectl 执行结果&#xff0c;一键生成StatefulSetpodServiceconfig Deployment pod重启ip和名称随机分配&#xff0c;适合java服务类部署 StatefulSet pod重启ip和名…

再学C语言31:函数——递归

C允许一个函数调用其自身&#xff0c;这种调用过程被称为递归&#xff08;recursion&#xff09; 使用递归的风险&#xff1a;如果程序中没有设定可以终止递归的条件检测&#xff0c;会无限制地执行递归调用 所以涉及递归的程序需要谨慎设计 递归一般可以替代循环语句使用&a…

Mozi僵尸网络(P2P僵尸网络Mozi)

Mozi僵尸网络概述 Mozi僵尸网络是于2019年底首次出现在针对路由器和DVR 的攻击场景上的一种P2P僵尸网络。主要攻击物联网&#xff08;IoT&#xff09;设备&#xff0c;包括网件、D-Link和华为等路由设备。它本质上是Mirai的变种&#xff0c;但也包含Gafgyt和IoT Reaper的部分代…

springboot mybatis mysql快速开始(详细入门操作)(二)

七、创建service类。要注意相应的注解service,autowired不能丢&#xff0c;不然系统识别不到这些组件。里面写对应的mapper方法。Service public class SplineService { private static final Logger log LoggerFactory.getLogger(SplineService.class); Autowired private Sp…

国产音频ADC芯片的应用以及选型

想要让模拟信号和数字信号顺利“交往”&#xff0c;就需要一座像“鹊桥”一样的中介&#xff0c;将两种不同的语言转变成统一的语言&#xff0c;消除无语言障碍。这座鹊桥就是转换器芯片&#xff0c;也就是ADC芯片。ADC芯片的全称是Analog-to-Digital Converter, 即模拟数字转换…