“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“




 我的个人主页

接下来我将方享四道由易到难的编程题,进入我们的JavaSE复习之旅。

1:大小写转换------题目链接

解题思路:

 在ASCII码表中,⼤写字⺟A-Z的Ascii码值为65- 90,⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟⼤⼩写之间的关系为:⼩写字⺟的ascii码值 - 32 = ⼤写字⺟的ascii码值。因此可以利⽤这⼀ 特性,先判断字⺟为⼤写还是⼩写,之后根据 ⼤⼩写决定如何进⾏转换。

参考代码:

​
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNextLine()){String line = in.nextLine();if (Character.isLowerCase(line.charAt(0))){//if (line.charAt(0) >= 97 && line.charAt(0) <= 122){char c = (char) (line.charAt(0) - 32);System.out.println(c);}else{char c = (char) (line.charAt(0) + 32);System.out.println(c);}​

调试结果如图所示:

2. 斐波那契数列------题目链接
解题思路:
由题意可知,斐波那契数列的的第⼀项和第⼆项为1,后续项的⼤⼩为前⼀项和前两项的和,
第三项=第⼀项+第⼆项;
第四项=第⼆项+第三项;
以此类推。
故可以考虑使⽤递归的思路去求第n项的⼤⼩。
例如求第5项时,⼤致图解如下:

参考代码 :

public class Main2{public static void main(String[] args) {Scanner in = new Scanner(System.in);int ret = fib(in.nextInt());System.out.println(ret);}public static int fib(int i) {int arr[] = new int[i+1];//这⾥让的返回值为了⽅便理解,我们数组的0下标并不做任何有意义的计算(相当于舍弃
了),⽅便后续返回结果的时候直接返回i下标的值即可。arr[0] = 0;arr[1] = 1;arr[2] = 1;for (int j = 3; j <= i; j++) {arr[j] = arr[j - 1] + arr[j - 2];}return arr[i];}

调试结果如图所示: 

3. 删除公共字符 ------题目链接

解题思路:

这道题的意思是让我们在字符串1(暂记为str1)中删除字符串2(暂记为str2)中包含的字⺟
(注意:空格不会计算在内)此时同学们可能会疑惑⼀个问题,需要注意⼤⼩写问题嘛?再
仔细阅读题⽬的意思,单纯的只是让咱们把str1中包含的str2的字⺟删掉,并不涉及到不区分
⼤⼩写的问题,所以我们还是要区分⼤⼩写问题的。我们可以对str1中的字符串进⾏遍历,
借助⼀个StringBuilder对象进⾏结果的拼接,获取到每个字符后(空格不计,直接进⾏拼
接)去在str2当中去看看有没有相同的字⺟,如果没有,则表⽰不⽤删除,并将其拼接
StringBuilder对象中,如果有,则不进⾏拼接。

参考代码:

1 import java.util.Scanner;
2
3 
4 public class Main {
5     public static void main(String[] args) {
6      Scanner in = new Scanner(System.in);
7         // 注意 hasNext 和 hasNextLine 的区别
8         while (in.hasNextLine()) { // 注意 while 处理多个 case
9         String str1 = in.nextLine();
10         String str2 = in.nextLine();
11         System.out.println(func(str1,str2));
12         }
13     }
14
15     private static String func(String str1, String str2) {
16         StringBuilder stringBuilder = new StringBuilder();
17         for (int i = 0; i < str1.length(); i++) {
18         char c = str1.charAt(i);
19         boolean flag = true;
20         if (c != ' '){
21         for (int j = 0; j < str2.length(); j++) {
22         if (c == str2.charAt(j)){
23             flag = false;
24                 break;
25         }
26     }
27 }
28         if (flag == true){
29             stringBuilder.append(c);
30     }
31 }
32         return String.valueOf(stringBuilder);
33     }
34 }

调试结果:

 解题方法二:

我们可以遍历str1这个字符串,拿到每个字符,看str2当中是否包含当前字符,如果不包含,
难么就拼接到StringBuilder对象当中。直到拿到最后的结果。
难点:
1. String本⾝不包含,如何判断⼀个字符在不在当前字符串当中的⽅法。只有⼀个contains
⽅法。
该⽅法原型如下:
public boolean contains(CharSequence s) {return indexOf(s.toString()) >= 0;}
我们可以看到参数并不是char类型。那么如何处理呢?请看如下代码:
if(!str2.contains(ch+"")) {sb.append(ch);}
这⾥只要字符拼接上⼀个空的字符串即可达到⽬标.
参考代码:
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString str1 = in.nextLine();String str2 = in.nextLine();String ret = func(str1,str2);System.out.println(ret);}}
public static String func(String str1,String str2) {StringBuilder sb = new StringBuilder();for(int i = 0;i < str1.length();i++) {char ch = str1.charAt(i);if(!str2.contains(ch+"")) {sb.append(ch);}}return sb.toString();}}
4. 输⼊两个字符串a和b,字符串内容为⼆进制数字,求两个字符串相加的结果, 加法计算⽅法以⼆进制⽅式计算,并返回对应的字符串结果。要求程序尽可能 的⾼效。
题目链接
输⼊描述:
输⼊两个字符串,如"1101", "1100"
输出描述: "11001"
解题思路:
1. 正常数字相加运算⽅式为:
124
456 +
------
580
从后往前进⾏计算,进位也是从后往前。所以,我们应该把输⼊的字符串进⾏逆序。
2. "124" + "456" 这两个字符串逆置后进⾏相加的进位
"421"
"654" +
---------
085 最后将结果字符串逆置即可
3. 进位只有⼀种情况,对应位上都是字符1.

参考代码:

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNext()) { // 注意 while 处理多个 caseString a = in.next();//String b = in.next();System.out.println(add(a, b));}}public static String add(String a, String b) {StringBuilder sb = new StringBuilder();int lenA = a.length();int lenB = b.length();int max = Math.max(lenA, lenB);StringBuilder stringBuilderA = new StringBuilder(a).reverse();StringBuilder stringBuilderB = new StringBuilder(b).reverse();// 0110 1111boolean isCarry = false;for (int i = 0; i < max; i++) {//这⾥没定义谁最⼤,可能字符串A先⾛完,也可能字符串B先⾛完//只需要补0就⾏char aChar = i >= lenA ? '0' : stringBuilderA.charAt(i);char bChar = i >= lenB ? '0' : stringBuilderB.charAt(i);if (aChar == '1' && bChar == '1') {sb.append(isCarry ? '1' : '0');isCarry = true;} else if (aChar == '0' && bChar == '0') {sb.append(isCarry ? '1' : '0');isCarry = false;} else {sb.append(isCarry ? '0' : '1');}}if (isCarry) sb.append("1");return sb.reverse().toString();}
}

调试结果:

 "今日JavaSE复习圆满收官,编程之路再启新程!" 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Zynq FPGA对雷龙SD NAND的性能测试评估

文章目录 一、SD NAND特征1.1 SD卡简介1.2 SD卡Block图 二、SD卡样片三、Zynq测试平台搭建3.1 测试流程3.2 SOC搭建 四、软件搭建五、测试结果六、总结 一、SD NAND特征 1.1 SD卡简介 雷龙的SD NAND系列有多种型号&#xff0c;本次测试使用的是CSNP4GCR01-AMW和CSNP32GCR01-A…

使用AT指令通过ESP8266实现TCP/IP服务器的创建、发送数据和接收数据

1. 初始化ESP8266 首先&#xff0c;确保ESP8266模块进入AT指令模式。 AT 2. 设置ESP8266为STA或APSTA模式 首先&#xff0c;确保ESP8266处于正确的模式。为了创建TCP/IP服务器&#xff0c;通常需要设置为STA模式&#xff08;连接到外部路由器&#xff09;或APSTA模式&#x…

Springboot+Vue+mysql前后端分离的Java项目部署教程

参考了网上许多文章&#xff0c;有的使用的是nginx&#xff0c;eclipse&#xff0c;其实只要是数据库或者java的软件基本都大同小异。 本人使用phpstudy对项目进行部署&#xff0c;亲测有效。 需要的软件&#xff1a; 1.Node.js安装&#xff08;ps&#xff1a;这一步我也不知道…

【MySQL】数据库整合攻略 :表操作技巧与详解

前言&#xff1a;本节内容讲述表的操作&#xff0c; 对表结构的操作。 是对表结构中的字段的增删查改以及表本身的创建以及删除。 ps&#xff1a;本节内容本节内容适合安装了MySQL的友友们进行观看&#xff0c; 实操更有利于记住哦。 目录 创建表 查看表结构 修改表结构 …

常用的c++新特性-->day03

断言和异常 断言断言的基本使用 静态断言静态断言的基本使用 异常异常基本使用c98异常案例 noexceptnoexcept简单案例 断言 断言的基本使用 #include <iostream> #include <cassert>// >>>>>>>>>>>>>>>> 断言的…

Python数据分析NumPy和pandas(二十七、数据可视化 matplotlib API 入门)

数据可视化或者数据绘图是数据分析中最重要的任务之一&#xff0c;是数据探索过程的一部分&#xff0c;数据可视化可以帮助我们识别异常值、识别出需要的数据转换以及为模型生成提供思考依据。对于Web开发人员&#xff0c;构建基于Web的数据可视化显示也是一种重要的方式。Pyth…

shell中执行hive指令以及hive中执行shell和hdfs指令语法

0. 简介 主要介绍了三种环境命令执行语法&#xff1a; shell中执行hive指令hive中执行shell指令hive中执行hdfs指令 1. shell中执行hive指令 语法&#xff1a;hive [-hiveconf xy]* [<-i filename>]* [<-f filename> | <-e query-string>] [-S] 说明&…

区块链技术入门:以太坊智能合约详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术入门&#xff1a;以太坊智能合约详解 区块链技术入门&#xff1a;以太坊智能合约详解 区块链技术入门&#xff1a;以太…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台&#xff0c;后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码&#xff0c;这就是若依的强大之处&#xff0c;即便你不会Java和vue开发&#xff0c;只要跟着石头哥也可…

AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例

文末有免费工具可在线体验&#xff0c;或者网络搜索关键词“思通开源AI能力平台” 一、扫描与图像预处理 技术实现过程 在纸质档案的数字化过程中&#xff0c;首先需要使用高精度扫描仪对纸质文档进行扫描&#xff0c;生成高清的数字图像。这一步骤是整个OCR流程的基础&#xf…

科学计算服务器:如何计算算力?如何提升科学研究效率?

在现代科学研究的舞台上&#xff0c;科学计算服务器犹如一位强大的幕后英雄&#xff0c;为复杂科学计算任务的攻克提供着坚实支撑。准确计算其算力并充分发挥优势&#xff0c;对提升科学研究效率意义非凡。 服务器的中央处理器&#xff08;CPU&#xff09;计算力。在科学计算服…

Python爬虫基础-正则表达式!

前言 正则表达式是对字符串的一种逻辑公式&#xff0c;用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则的字符串”&#xff0c;此字符串用来表示对字符串的一种“过滤”逻辑。正在在很多开发语言中都存在&#xff0c;而非python独有。对其知识点…

【go从零单排】迭代器(Iterators)

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;迭代器的实现通常不是通过语言内置的迭代器类型&#x…

基于SpringBoot和Vue的公司文档管理系统设计与开发(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

使用vite构建一个react网站,并部署到Netlify上

这篇教程中&#xff0c;我会教你如何用vite快速构建一个react网站&#xff0c;并把网站免费部署到Netlify上&#xff0c;让别人可以经由网址访问你的react网站。 1. 使用vite构建基础框架 npm create vitelatestcd vite-project npm install npm run dev2. 网站内容设计 3. 构…

青藤深度参编的终端安全国家标准正式发布

近日&#xff0c;国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告&#xff0c;由TC260&#xff08;全国网络安全标准化技术委员会&#xff09;归口&#xff0c;公安部第三研究所牵头的GB/T 29240-2024《网络安全技术 终端计算机通用安全技术规范》&…

Python爬虫如何处理验证码与登录

Python爬虫如何处理验证码与登录 Python 爬虫在抓取需要登录的网站数据时&#xff0c;通常会遇到两个主要问题&#xff1a;登录验证和验证码处理。这些机制是网站用来防止自动化程序过度抓取数据的主要手段。本文将详细讲解如何使用 Python 处理登录与验证码&#xff0c;以便进…

Stream流(JAVA笔记第三十三期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 Stream流的使用步骤获取Stream流Stream流的中间方法Stream中的终结方法收集方法collect Stream流可以比作工厂的流水线 Stream流的概念 Stream流的使用步骤 先得到一条Stream流(…

基于python深度学习技术矩阵分解的推荐系统,通过学习隐含特征,实现推荐

实现了一个基于矩阵分解的推荐系统&#xff0c;用于预测用户对电影的评分。具体来说&#xff0c;该程序通过TensorFlow构建和训练一个模型&#xff0c;来学习用户和电影之间的隐含特征&#xff0c;并根据这些特征预测评分。以下是代码的主要功能和步骤的详细描述&#xff1a; …

Python学习从0到1 day27 第三阶段 Spark ③ 数据计算 Ⅱ

目录 一、Filter方法 功能 语法 代码 总结 filter算子 二、distinct方法 功能 语法 代码 总结 distinct算子 三、SortBy方法 功能 语法 代码 总结 sortBy算子 四、数据计算练习 需求&#xff1a; 解答 总结 去重函数&#xff1a; 过滤函数&#xff1a; 转换函数&#xff1a; 排…