笔试训练(2)

news2024/9/30 19:39:39
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        StringBuffer s1=new StringBuffer("A");
        StringBuffer s2=new StringBuffer("B");
        process(s1,s2);
        System.out.println(s1);
        System.out.println(s2);
    }
    public static void process(StringBuffer s1,StringBuffer s2){
        s1.append(s2);
        s2=s1;
    }

1)上述程序输出的结果是:AB,B

2)下列不能作为标识符的是:

 标识符 
    A ATRING
    B X3X
    C void,int,double
    D desf

解析: 数字字母下划线以及美元符号,标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义,况且数字不能在最前面

编程题1:回文串

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

举个例子:

假设说字符串A="aba",字符串B="b",现在有四种将B插入A的方法:

插在字符串A的第一个字母'a'前面,"baba"不是回文串

插在字符串A的第一个字母'a'后面,发现'abba'是一个回文串

插在字符串A的第二个字母'b'后面,发现'abba'是一个回文串

插在字符串A的第三个字母'a'后面,发现'abab'不是一个回文串

所以说此时的的正确答案是4个

注意事项:

1)在StringBuffer这个对象中,是没有equals方法的我们假设说如果调用了StringBuilder的equals方法,那么就默认调用的是父类的equals方法,比较的是两个对象的地址比如说:

 public static void main(String[] args) {
    StringBuilder S1=new StringBuilder("abc");
    StringBuilder S2=new StringBuilder("abc");
    System.out.println(S1.equals(S2));//这个默认比较的是父类的equals方法
 }

2)我们在StringBuffer中进行调用字符串逆置的时候,不光新接收的stringBuffer指向的字符数组会发生改变,况且来说原来字符串指向的stringBuffer也会发生改变:

  String str1="abcd";
  StringBuilder S1=new StringBuilder(str1);
  StringBuilder S2=S1.reverse();
  System.out.println("==========");
        System.out.println(str1);
        System.out.println(S1);
        System.out.println(S2);

这个程序的打印结果就是

abcd
dcba
dcba

3)StringBuffer还有一个库函数叫做insert方法:

一:第一个参数是你想进行插入的目标位置,第二个参数就是你要进行插入的字符串:

 StringBuffer S1=new StringBuffer("HelloWorld");
 S1.insert(0,"lijiawei");
 System.out.println(S1);

最终咱们程序的打印结果就是:lijiaweiHelloWorld

二:况且来说这个方法也是可以进行插入字符的:

 StringBuffer stringBuffer=new StringBuffer("aaaaa");
 stringBuffer.insert(0,'c');
 System.out.println(stringBuffer);

所以说最终打印的结果是caaaa

所以说它最终会进行替换对应位置的字符,况且会把对应位置的字符向后进行移动:

思路:

一:判断是否回文

如果说只给一个字符串判断它是否是回文串,那么就通过两种方法来进行解决

1)直接进行逆置,判断是否和原来的字符串是相同的

2)定义双指针,一个指向头,一个指向未,让指向头和指向未的字符串都向前进行减减,如果说他们所指向的字符不相等,那么就说明不是回文串

二:找到合适的位置进行插入 

其实我们最本质上纠结的一个问题就是说如何在上述字符串str1的_位置依次插入一个字符串B,然后逐步地进行判断他是否是一个回文串,在定义变量进行++操作

依次再放到1号,2号,3号,4号位置,这个移动元素的过程标志库已经帮我们做好了这件事情了

注意:我们也是可以把对应的字符串放到4号位置且不会出现下标越界的情况,因为这不是一个数组

  StringBuffer buffer=new StringBuffer("abcd");
  buffer.insert(4,'0');
  System.out.println(buffer);

上述程序的运行结果是:

abcd0
import java.util.*;
public class Main{
    public static void main(String[] args){
    Scanner scanner=new Scanner(System.in);
    while(scanner.hasNext()){
        String A=scanner.nextLine();
        String B=scanner.nextLine();
        int count=0;
        for(int i=0;i<=A.length();i++){
           StringBuffer S1=new StringBuffer(A);
            S1.insert(i,B);//插入到对应的位置
           StringBuffer temp=new StringBuffer(S1);
           StringBuffer S2=S1.reverse();//继续宁字符串逆置操作最后在来进行判断是否相等
           if(temp.toString().equals(S2.toString())){
                 count++;
              }
         }
         System.out.println(count);
      }
        
    }
}
import java.util.*;
public class Main{
     public static boolean isTrue(StringBuffer S){
        char[] array=S.toString().toCharArray();
        int left=0;
        int right=array.length-1;
        while(left<=right){
            if(array[left]!=array[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    public static boolean isTrue(StringBuffer S){
        char[] array=S.toString().toCharArray();
        int left=0;
        int right=array.length-1;
        while(left<right){
            if(array[left]!=array[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    public static void main(String[] args){
    Scanner scanner=new Scanner(System.in);
    while(scanner.hasNext()){
        String A=scanner.nextLine();
        String B=scanner.nextLine();
        int count=0;
        for(int i=0;i<=A.length();i++){
           StringBuffer S1=new StringBuffer(A);
            S1.insert(i,B);
           if(isTrue(S1)){
               count++;
             }
         }
         System.out.println(count);
      }
        
    }
}

或者我们通过上述的方式进行解答也是可以的

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

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

相关文章

推翻OpenAI结论,DeepMind重新定义预训练的参数和规模关系!

文&#xff5c;王思若前言从20年开始&#xff0c;“最大语言模型”的桂冠被各大研究机构和科技公司竞相追逐&#xff0c;堆砌参数&#xff0c;猛上算力&#xff0c;开启了“大炼丹”时代&#xff0c;模型参数量仿佛越大越好&#xff0c;甚至GPT-4模型参数量将超过100万亿的传闻…

14年本科毕业,3个月转行软件测试月薪13.5k,32的岁我终于找对了方向

​职场奋斗的过程&#xff0c;其实就是不停地做选择&#xff0c;做判断的过程。决定你发展的&#xff0c;多数取决于你的判断和眼光。你任何的投入&#xff0c;都决定了你未来的格局和结局。今天跟大家分享的我的转行故事&#xff0c;一起来看看吧。 为了新的目标和方向&#x…

PDF怎么拆分/合并? 3款 PDF 拆分和合并工具分享

以PDF格式传输文档已广泛使用很长时间&#xff0c;也是传输文档的最常见方式之一。但是&#xff0c;当涉及到从众多PDF文件中提取特定页面并将它们放在一起以制作新的PDF文档时&#xff0c;我们将需要专用软件来合并和拆分多个PDF。 现在&#xff0c;如果您想知道&#xff0c;…

叶面积指数(LAI)介绍以及遥感估算方法

前言 叶面积指数精度是正确预测产量的重要参数之一。 同时&#xff0c;还有那么多疑问&#xff0c;如何才能正确&#xff1f; 以及如何使用最有效的方法计算叶面积指数&#xff08;LAI&#xff09;&#xff1f; 什么是最佳 LAI&#xff1f; 哪些估算叶面积指数精度的方法比较好…

Matplotlib基础绘图函数示例

1. pyplot基础图表函数概述 2. pyplot饼图的绘制 3. pyplot直方图的 绘制 4. pyplot极坐标图的绘制 5. pyplot散点图的绘制 单元小结

[附源码]Python计算机毕业设计果蔬预约种植管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

内部分享讲解DevOps后,我再组织成文

DevOps 已然家喻户晓&#xff0c;如果你还没听过&#xff0c;那确实要去补补课。随着敏捷研发的普及&#xff0c;一种快速响应业务、高效运维的模式必然深得众心&#xff0c;Git 的发展近来几乎在代码管理领域一骑绝尘&#xff0c;在此基础上衍生出 GitOps 的概念&#xff0c;成…

MR案例:计算学生成绩(总分和平均分)

文章目录一、提出任务二、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录&#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建成绩映射器类5、创建成绩驱动器类6、启动成绩驱动器类…

JVM本地锁(一)简单实现

JVM本地锁由ReentrantLock或synchronized实现 模拟场景 假设有个共享库存资源&#xff0c;多线程进行访问&#xff0c;每次访问库存-1. Data public class StockDemo {private Integer stock 5000; }再controller -> service 进行访问调度 Service public class StockD…

题:付账问题

1235. 付账问题 - AcWing题库 几个人一起出去吃饭是常有的事。 但在结帐的时候&#xff0c;常常会出现一些争执。 现在有 nn 个人出去吃饭&#xff0c;他们总共消费了 SS 元。 其中第 ii 个人带了 aiai 元。 幸运的是&#xff0c;所有人带的钱的总数是足够付账的&#xff…

ctf笔记:php

ctf笔记&#xff1a;php 博客链接&#xff1a;https://www.blog.23day.site/articles/80 语法 攻防世界&#xff1a;easy_php 攻防世界&#xff1a;simple_php $a $b等于TRUE&#xff0c;如果类型转换后 $a 等于 $b。$a $b全等TRUE&#xff0c;如果 $a 等于 $b&#xff0c…

【封神台】辛巴猫舍-SQL注入

本节学习目标&#xff1a; 判断是否存在SQL漏洞&#xff0c;以便注入获取数据库的内容本节需知&#xff1a; SQL注入%20为空格的url代码环境为打靶环境1. 判断是否存在SQL漏洞 http://cntj8003.ia.aqlab.cn/index.php?id1%20and%2011 http://cntj8003.ia.aqlab.cn/index.php…

注册VMware虚拟机时报错“指定的项、名称或标识符已存在“

环境 VMware虚拟化平台 问题描述 收到业务侧报障&#xff0c;多台Linux虚拟机无法登录。经查询&#xff0c;报障的Linux操作系统均部署在VMware虚拟化平台&#xff0c;承载的宿主机已宕机且无法启动&#xff0c;虚拟机为断连状态。虚拟机移除清单&#xff0c;离线迁移&#…

图片识别转公式,GitHub 又一 LaTeX 神器面世

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 只需要把公式图片用鼠标拖动到工具内&#xff0c;就能一键转成 LaTex 公式。 写论文、做研究时&#xff0c;最让你头疼的是什么&#xff1f;想必公式编辑会榜上有名。那么有没有便捷的…

<Linux进程通信之管道>——《Linux》

目录 一、进程通信 1.进程间通信介绍 2.进程间通信目的 3.进程间通信发展 4.进程间通信分类 二、管道 1.什么是管道 2.匿名管道 3.用fork来共享管道原理 4.站在文件描述符角度-深度理解管道​编辑 5.编程模拟实现父子进程在管道读写通信​编辑 6.进程控制&#xff…

【DevOps实战系列】第一章:详解DevOps运行环境

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 DevOps是什么&#xff1f; DevOps&#xff08;Development和Operations的组合词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#x…

子序列的权值最小值

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 给定一个长度为 nnn 的数组 aaa&#xff0c;求数组所有非空子序列权值的最小值。 定义子序列 ai,aj,…,aka_i,a_{j},\dots,a_kai​,aj​,…,ak​ 的权值为 其中 &\&& 为二进制中…

Nat. Commun. | 基于最优传输的单细胞数据集成统一计算框架

本文介绍由同济大学控制科学与工程系的洪奕光和中国科学院数学与系统科学研究院的万林共同通讯发表在 Nature Communications 的研究成果&#xff1a;单细胞数据集成可以提供细胞的全面分子视图。然而&#xff0c;如何整合异质性单细胞多组学以及空间分辨的转录组学数据仍然是一…

Linux C编程一站式学习笔记3

lLinux C编程一站式学习笔记 chap3 简单函数 文章目录lLinux C编程一站式学习笔记 chap3 简单函数一.数学函数C标准库和glibc二.自定义函数三.形参和实参Man Page习题四.全局变量、局部变量和作用域局部变量 local variable全局变量 global variable全局变量和局部变量重名的情…

【linux】linux centos 6 日志服务、rsyslogd日志服务

1.概述 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服 务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和 syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。 rsyslogd的新特点: 基于TCP网络协议传输日志…