笔试练习Day01

news2024/11/26 2:44:17

 目录

选择题:

题一:

String 类:

StringBuffer 类的详解:

关于 Vector 的详解:

编程题:

题一:组队竞赛

题二:删除公共字符串



选择题:

题一:

String 类:

  • String 类对象可以存放字符串常量,但StringBuffer类对象不可以;
  • String类是被 final 修饰的;

StringBuffer 类的详解:

Java——StringBuffer类中常用方法的总结_宋子浩的博客-CSDN博客

  • StringBuffer 类(字符串缓冲区):类似一个字符容器,当在其中增加或删除字符时,操作的都是字符容器,因此不会产生新的 StringBuffer 对象,这样也可以降低开销;
  • 方法:
    方法功能
    StringBuffer append(char c)添加字符到StringBuffer对象的末尾
    StringBuffer insert(int offset, String str)在StringBuffer对象的 offset 位置插入字符串 str
    StringBuffer deleteCharAt(int index)删除StringBuffer对象中指定位置的字符
    StringBuffer delete(int start, int end)删除StringBuffer对象中指定范围的字符串或字符
    StringBuffer replace(int start, int end, String s)将StringBuffer对象中指定范围的字符或字符串用新的字符串替换掉
    void setCharAt(int index, char ch)修改指定位置的字符为 ch
    String toString()返回StringBuffer缓冲区对应字符串对象
    StringBuffer reverse()将StringBuffer对象的字符串翻转

关于 Vector 的详解:

         Java集合篇:Vector_new vector()_张维鹏的博客-CSDN博客
  • Vector(集合类):Vector类是在java中实现自动增长的对象数组,以适应创建Vector 后进行增添或删除操作。与数组一样,可以使用整数索引进行访问组建;
    (拓展)Vector 是线程安全的,底层使用 synchronized 进行加锁;

  • 接口方面:
    • Vector 实现 List 接口,继承 AbstractList 类,所以可以将其看做是队列,支持队列基本操作;
    • Vector 实现 RandmoAccess 接口,即具有随机访问、快速访问功能;
    • Vector 实现 Cloneable 接口,支持 clone() 方法,可以被克隆;
    • Vector 实现 Serializable 接口,支持序列化;
  • 成员变量方面:
            Vector 提供了 elementData、elementCount、capacityIncrement 三个成员变量:
  •  elementdata:由 Object 封装的动态数组,其中保存了 Vector 的元素,默认大小为 10;
  • elementCount:Vector 对象中元素个数;
  • capacityIncrement:数组扩容时的参考参数;不指定其值的时候,数组大小翻倍,指定了就按照指定大小增容;

题二:

         此题一看就是在考察继承类的访问修饰限定符问题,四个选项都是重写父类的 fun() 方法,并且方法参数、返回值都相同,唯一不同的是访问修饰限定符,于是想到:子类重写父类方法,访问修饰权限必须 ≥ 父类的访问修饰权限,此处父类都是 public,那么子类只能是 public 了。

 

题三:

 堆区:

  •         在java中,凡是 new 出来的对象一般都放在堆区中,堆中的对象生命周期由 JVM 的 GC 垃圾回收机制统一管理;
  •         类的非静态成员变量也在堆区里,其中,对于基本数据类型直接保存其值,对于复杂类型保存的是其指向对象的引用;

  栈区:

  •         栈区主要放一些运行期间用到的基本数据类型的局部变量,或者指向其他对象的一些引用,因为运行起来的方法的内存会分配在栈中,当程序运行结束,对应的空间就会被释放;

全局区:

  •         存放全局变量静态变量以及常量,在程序结束后由操作系统释放;

方法区:

  •         各个线程共享的内存区域,存放.class二进制文件,包含类信息、静态变量、常量池;

题四:

  • public:对所有类可见;
  • protected:对所有子类和同一个包中的所有其他类可见;
  • private:仅对该类自身可见,其他类、其子类都不可见;
  • 默认修饰权限:对同一个包中的所有类可见;

编程题:

题一:组队竞赛

链接:组队竞赛_牛客笔试题_牛客网
来源:牛客网

牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:
一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。
如样例所示:
如果牛牛把6个队员划分到两个队伍
如果方案为:
team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
而如果方案为:
team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
没有比总和为10更大的方案,所以输出10.

输入描述:

输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

第二行包括3*n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.

输出描述:

输出一个整数表示所有队伍的水平值总和最大值.

示例1

输入

2
5 2 8 5 1 5

输出

10
题解分析:
        每个队伍的水平值为一组三人中中间大的值,那么可以想到先对所有队员的水平值排成升序,那么每一个队伍都取一个最小值、再依次倒序取两个最大的值,组成的三个值之和,正好是所有分配情况中最大的;如图:

        在数组中如何取值?

        有几个队伍就要分配几组,也就会产生几个水平值,所取到的水平值,也是排好序后每次数组倒数第二个值,取出后求和即可;

import java.util.*;

public class Test100449 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();
            int[] member = new int[3 * n];
            for (int i = 0; i < member.length; i++) {
                member[i] = scan.nextInt();
            }
            // 排序
            Arrays.sort(member);
            // 有几组就取几次
            long count = 0;
            int cur = member.length;
            while (n-- > 0) {
                count += member[cur -= 2];
            }
            System.out.println(count);
        }
    }
}

题二:删除公共字符串

链接:删除公共字符_牛客题霸_牛客网

描述

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

输入描述:

每个测试输入包含2个字符串

输出描述:

输出删除后的字符串

示例1

输入:

They are students. 
aeiou

输出:

Thy r stdnts.
题解分析:
①暴力法:使用两个“指针”遍历两个字符串.......;光查询的效率就极低,O(N^2),更别说考虑要不要删除了,肯定拿不掉 offer;
②筛选法:先将要删除的字符全部存入到 Set 里,再拿着给定字符串去 Set 中检查,存在该字符,就跳过,不存在,说明不是要删的。如果真的在原字符串进行删除,就得涉及到字符串整体移动,这样会导致效率降低,不妨使用 “字符串追加”;
public class Test69390 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String source = scan.nextLine();
            String target = scan.nextLine();

            StringBuffer newStr = remove(source,target);
            System.out.println(newStr.toString());
        }
    }

    private static StringBuffer remove(String source, String target) {
        StringBuffer stringBuffer = new StringBuffer();
        Set<Character> set = new HashSet<>();
        // 遍历 target 往 set 里放
        for (int i = 0; i < target.length(); i++) {
            set.add(target.charAt(i));
        }
        // 遍历 source,在 set 中没有就追加
        for (int i = 0; i < source.length(); i++) {
            char ch = source.charAt(i);
            if (!set.contains(ch)) {
                stringBuffer.append(ch);
            }
        }
        return stringBuffer;
    }
}

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

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

相关文章

node(express框架)连接mysql 基础篇

文章目录 电脑安装mysql配置mysql连接mysql 创建表 创建node文件启动node node 连接数据库连接数据库 电脑安装mysql 由于我的是mac 我就安装mac版本的 mysql 如已安装跳过此步骤 mysql官网选择版本安装配置 这里注意选择下面的 next输入mysql密码 点击finish 配置mysql 打…

ROS:TF变换

一.TF变换数据格式&#xff08;msg&#xff09; TransformStamped.msg&#xff08;两个坐标系之间转换&#xff09; std_msgs/Header header uint32 seq time stamp string frame_id 指明哪一个坐标系&#xff08;父坐标系&#xff09; string child_f…

汇编语言(第3版) - 学习笔记 - 实验8 分析一个奇怪的程序

实验8 分析一个奇怪的程序 题目解析顺序执行查看反汇编测试一下 题目 分析下面的程序&#xff0c;在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 通过这个程序加深对相关内容的理解。 assume cs:codesg codesg segmentmov ax, 4c00h int 21h …

BUUCTF pwn1_sctf_2016

小白垃圾笔记而已&#xff0c;不建议阅读。 唉&#xff0c;因为没有在一开始创建flag文件&#xff0c;导致调试了半天也没有找到问题所在。 这道题是这样的&#xff1a; main函数调用vuln函数 其实在程序中还有一个get_flag函数&#xff1a; 我们可以将返回地址覆盖成它。 覆…

E. Number With The Given Amount Of Divisors

传送门 题意&#xff1a;求出整好有n个因子的最小整数。 思路&#xff1a; 要找到恰好有n个因子的最小整数&#xff0c;我们可以利用质因数分解的思想来求解。设该整数的质因数分解式为&#xff1a;其中p1,p2,...,pn均为不同的质数&#xff0c;a1,a2,...,an均为正整数。则该整…

【vue3】05-vue的双向绑定 — v-model

文章目录 v-mdelv-model的基本使用v-model绑定其他表单元素textareaselectcheckboxradio v-model修饰符 v-mdel v-model 是 Vue.js 中用于表单元素和组件双向数据绑定的指令。它可以将表单元素或组件的值和 Vue 实例的数据属性进行双向绑定: 即当表单元素或组件的值发生变化时…

Ajax 实例

文章目录 AJAX 实例AJAX 实例解析 AJAX 实例 为了帮助您理解 AJAX 的工作原理&#xff0c;我们创建了一个小型的 AJAX 应用程序: 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <script> function loadXMLDoc() {var x…

第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇

随着数字化浪潮的来临&#xff0c;云原生技术正在改变着各行各业&#xff0c;通过IT变革驱动业务创新发展&#xff0c;促进企业自身以及产业生态的转型升级。 因此&#xff0c;灵雀云联合云原生技术实践联盟&#xff08;CNBPA&#xff09;和行业内头部厂商F5&#xff0c;共同发…

如何实现一款接入chatGPT的智能音箱

现有的一些“智能音箱”如某度和某猫精灵&#xff0c;跟现在的chatGPT比显得智障。如果能有一款接入chatGPT的智能音箱&#xff0c;它的交互性就好多啦。有gpt加持的智能音箱绝对会很强&#xff0c;以下提供探讨下实现思路。 目前智能音箱在语音交互层面依然不够成熟&#xff0…

PSO算法、MATLAB代码实现以及测试效果

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 PSO算法原理进化操作算法流程图matlab代码实现main函数部分适应度函数部分PSO算法主体测试结果 (F1~F6) PSO算法原理 粒子群优化( Particle Swarm Optimization&am…

【C++关联容器】map的成员函数

目录 map 1. 构造、析构和赋值运算符重载 1.1 构造函数 1.2 析构函数 1.3 赋值运算符重载 2. 迭代器 3. 容量 4. 元素访问 5. 修改器 6. 观察者 7. 操作 8. 分配器 map map是关联容器&#xff0c;它按照特定的顺序存储由关键字值和映射值的组合形成的元素。 在一…

【Java】再看排序 —— 关于 Comparator 的用法

谈一个比较基础&#xff0c;又很常用的东西&#xff0c; Comparator 类&#xff0c;之前我写过一篇浅浅的关于这个的文章 &#xff0c;今天再复盘一下这个问题&#xff0c;把它弄熟 ps: 本文中提供的代码&#xff0c;为了提高可读性都没用 lamdam 和 函数式编程 简化书写&…

JVM-0423

运行时内存 程序计数器 作用:记录每个线程的代码执行到哪一条指令了 为了保证程序(在操作系统中理解为进程)能够连续地执行下去&#xff0c;CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用&#xff0c;所以通常又称为指令计数器。在程序开始执行…

论文阅读:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

使用移位窗口的分层视觉Transformer 继续阅读Transformer相关 0、摘要 本文提出了一种新的视觉Transformer&#xff0c;称为Swin Transformer&#xff0c;能够作为一个通用的骨干计算机视觉。将Transformer从语言适应到视觉的挑战来自于两个领域之间的差异&#xff0c;例如视…

QGIS数据可视化学习笔记01——一般的图层样式调整和在地图上添加图表

说明&#xff1a;QGIS数据可视化章节用的数据为QGIS绘制一张地图学习章节的数据&#xff0c;传送门&#xff1a;https://blog.csdn.net/qq_47188967/article/details/130196284 一、 一般的图层样式调整 首先呢&#xff0c;在QGIS中打开上一章节用的数据&#xff0c;界面如下&…

SpringMVC-HttpMessageConverter的使用

目录 1、HttpMessageConverter概述 2、RequestBody 3、RequestEntity 4、ResponseBody 5、SpringMVC处理json 6、SpringMVC处理ajax 7、RestController注解 8、ResponseEntity 1、HttpMessageConverter概述 HttpMessageConverter是什么 HttpMessageConverter&#xff0…

rabbitmq的高级特性

1.消息可靠性问题&#xff08;实现消费者确认&#xff09; 1.在项目中添加配置 logging:pattern:dateformat: HH:mm:ss:SSSlevel:cn.itcast: debug spring:rabbitmq:host: 192.168.2.182 # rabbitMQ的ip地址port: 5672 # 端口username: rootpassword: rootvirtual-host: /publ…

1.Qt Creator简介及Hello World

安装 下载链接 Qt 5.14.2下载 SDK建议的安装路径 SDK的案例中&#xff0c;宏定义默认要求直接安装在C盘 查看建议路径的流程 右键“解决方案”下的项目名称&#xff0c;选择最下面的“属性” “C/C” -> “常规” -> “附加包含目录” -> “右侧小箭头” ->…

【软件测试】3年测试岗碌碌无为?我到底该咋办?测试提升成长之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 无论哪个岗位&…

线程同步方式之三信号量

Linux线程同步方法之三 信号量 信号量本质上是一个计数器&#xff0c;用来表示公共资源中资源的数量。只要拥有信号量&#xff0c;未来一定能够拥有临界资源的一部分使用权。故申请信号量的本质就是对临界资源中特定的小块资源的预订机制。故能通过访问信号量就能提前知道临界…