【Java版oj】day05统计回文

news2024/11/27 18:27:41

  目录

一、原题再现

二、问题分析

三、完整代码


一、原题再现

统计回文_牛客题霸_牛客网

描述

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。
例如:
A = “aba”,B = “b”。这里有4种把B插入A的办法:
* 在A的第一个字母之前: "baba" 不是回文
* 在第一个字母‘a’之后: "abba" 是回文
* 在字母‘b’之后: "abba" 是回文
* 在第二个字母'a'之后 "abab" 不是回文
所以满足条件的答案为2

输入描述:

每组输入数据共两行。 第一行为字符串A 第二行为字符串B 字符串长度均小于100且只包含小写字母

输出描述:

输出一个数字,表示把字符串B插入字符串A之后构成一个回文串的方法数

示例1

输入:

aba

b

输出:

2

二、问题分析

        回文串就是前后对称的字符串。本题是判断是否是回文串的变形题。字符串本身不一定是回文,把第二个字符串插入进去看是否是回文。本题使用暴力求解方式计算即可。方法二是大家都首先想到的利用String类的相关操作进行求解。方法一则是结合了链表。

方法一:

        现将原字符串A添加进链表,然后从头开始遍历,将字符串B添加进链表,依次添加在字符串A首字符的前面,首字符的后面,第二个字符的后面.......最后一个字符的后面,每次添加后就进行回文比较、删除字符串B的操作、是否计数等操作。全程只需要在一个链表中进行增删操作。

        

方法二:

        遍历str1,将str2 insert进入str1的每个位置,判断是否是回文,这里注意的是,判断回文的时候,直接将字符串逆置,看是否相同就好了。是就++count;需要注意的是这里不能str1.insert(i,str2),这样的话str1改变了,判断下一个位置就不对了。所以每次使用str1重新给一个str,然后str.insert(i, str2),再判断。全程需要定义多个StringBuffer str = new StringBuffer(str1);

三、完整代码

import java.util.*;
import java.lang.*;
public class Main {
    public static boolean isPalindrome(List list) {
        int len = list.size()-1;
        for (int i = 0; i < len / 2; i++) {
            if (list.get(i) != list.get(len - 1 - i)) {
                return false;
            }
        }
        return true;
    }
    public static void addStr(List <Character> list, String str) {
        for (int i = 0; i < str.length(); i++) {
            list.add(str.charAt(i));
        }
        list.add(' ');
    }
    public static void addStr(List <Character> list, String str, int i) {
        for (int j = str.length() - 1; j >= 0; j--) {
            list.add(i, str.charAt(j));
        }
    }
    public static void removeStr(List <Character> list, String str, int i) {
        for (int j = 0; j < str.length();j++) {
            list.remove(i);
        }
    }
    public static void main(String[] args) {
        List<Character>list = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        String strA = in.nextLine();
        String strB = in.nextLine();
        int count = 0;
        addStr(list, strA);
        for (int i = 0; i < list.size(); i++) {
            addStr(list, strB, i);
            if (isPalindrome(list)) {
                count++;
            }
            removeStr(list, strB, i);
        }
        System.out.println(count);
    }
}

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();
        int len = str1.length();
        int n = 0;
        for (int i = 0; i <= len; i++) {
// 将字符串2插入到字符串1的每个位置,再判断是否是回文
            StringBuffer str = new StringBuffer(str1);
            str.insert(i, str2);
//注意这里,不能直接StringBuilder str5 = str.reverse();
//因为这样str本身又变了。
            StringBuilder tmp = new StringBuilder(str);
            StringBuilder str5 = tmp.reverse();
            if (str.toString().equals(str5.toString())) {
                n++;
            }
        } 
        System.out.println(n);
    }
}

 


 

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

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

相关文章

ADI Blackfin DSP处理器-BF533的开发详解50:RGBtoGary (图像灰度提取处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像灰度提取处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的…

OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。 是什么使得电脑工作? 驱动,驱使着硬件完成工作。 谁来写驱动? 制造电脑的公司自己来写驱动,因…

#芯片# N25Q128A21BSF40F

数据手册下载链接&#xff1a;N25Q128A21BSF40F 0. 指令集 1.基本介绍 SPI兼容串行总线接口。108 MHz&#xff08;最大&#xff09;时钟频率。推荐工作电压&#xff1a;1.8 V。单电源电压1.7 V至2 V。支持传统SPI协议&#xff0c;Quad I/O或Dual I/O SPI协议。四路/双路I/O指…

bug的生命周期你知道吗?一张图带你看懂它!

目录 1、什么是bug 2、bug的生命周期 3、如何描述一个bug 4、bug的级别 1、什么是bug 软件的bug狭义方面可以理解为是指软件程序的漏洞或缺陷&#xff0c;广义方面除找到程序漏洞之外&#xff0c;还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差…

【全网惟一面向软件测试人员的Python基础教程】- 你知道Python代码是怎样运行的吗?

全网惟一面向软件测试人员的Python基础教程 起点&#xff1a;《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗&#xff1f; 文章目录全网惟一面向软件测试人员的Python基础教程…

如何写好科研论文:Introduction(2)

导读 本系列[1]将切片介绍如何写好科研论文&#xff0c;包含了&#xff1a;摘要&#xff0c;背景介绍&#xff0c;方法&#xff0c;结果&#xff0c;讨论等。 由于翻译能力有限&#xff0c;强力推荐有需要的伙伴&#xff0c;直接在文末找到参考链接&#xff0c;阅读原文&#x…

外汇天眼:Swissquote获得CySEC许可证、BUX收购Ninety Nine

新的一周开始了&#xff0c;那么在过去的一周里备受大家关注的外汇行业新闻都有哪些呢&#xff1f;天眼君现在带大家回顾&#xff0c;比如Swissquote获得CySEC许可证、BUX收购西班牙新交易商Ninety Nine的零售经纪部门、Saxo Bank以“时机不合适”为理由终止与SPAC IPO合作。具…

12.3、后渗透测试--持久化后门

攻击主机&#xff1a; Kali 192.168.11.106靶机&#xff1a;windows server 2008 r2192.168.11.134零、为何要创建后门 当成功获取目标系统的访问权限后&#xff0c;需要寻找方法来恢复与目标主机的连接&#xff0c;而无需再进入目标系统。如果目标用户破坏了该连接&#xff0c…

Metal每日分享,虚假颜色混合滤镜效果

本案例的目的是理解如何用Metal实现虚假颜色效果滤镜&#xff0c;使用图像的亮度在两种用户指定的颜色之间进行混合&#xff1b; Demo HarbethDemo地址 实操代码 // 混合颜色 let filter C7FalseColor.init(fristColor: .blue, secondColor: .green)// 方案1: ImageView.im…

BMVC2022 | HR-VQVAE:用于图像重建和生成的基于Hierarchical Residual Learning的VQVAE

原文标题&#xff1a;Hierarchical Residual Learning Based Vector Quantized Variational Autoencoder for Image Reconstruction and Generation 链接&#xff1a;https://bmvc2022.mpi-inf.mpg.de/0636_poster.pdf paper&#xff1a;https://arxiv.org/abs/2208.04554 一…

新业务势头强劲,晨光股份转型之路走得如何?

近期&#xff0c;据网传的一份文件显示&#xff0c;上海晨光文具股份有限公司&#xff08;以下简称“晨光文具”、“晨光股份”、“晨光”“公司”&#xff09;将于11月29日起&#xff0c;暂停线上线下店面等渠道的A4纸销售。晨光股份&#xff08;603899.SH&#xff09;针对此份…

PreScan快速入门到精通第四十一讲图像分割传感器

图像分割传感器(ISS)是一种生成语义分割图像的工具。它在诸如分类、(深度)学习、行人识别、避免碰撞等应用领域非常有用。ISS通常与相机传感器结合使用,以获得被分割的图像。 摄像机传感器 ISS语义类型颜色 ISS语义目标颜…

Vue3+Vite4+Naive-UI 项目自动导入API和组件

一、Vue3常用API导入 安装依赖 pnpm i -D unplugin-auto-import进行Vite配置 文件名&#xff1a;vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import AutoImport from unplugin-auto-import/vite// https://vitejs.dev/config/ ex…

HDOCK 蛋白蛋白对接软件使用;LZerD网页在线对接

参考&#xff1a; http://hdock.phys.hust.edu.cn/ 注&#xff1a;本文章是取6BOY这蛋白&#xff0c;下载用pymol划分成DDB1-CRBN部分蛋白与BRD4部分蛋白&#xff0c;用这两个蛋白进行软件的对接测试 https://www.rcsb.org/structure/6BOY 一、HDOCK 蛋白蛋白对接软件使用 …

@Enumerated的使用

前言 今天做测试&#xff0c;发现还没有试过实体类中关于枚举项的使用&#xff0c;于是就做了个测试&#xff0c;发现了点问题&#xff08;发现的问题主要是针对我使用的ORM框架是Ebean&#xff0c;它自带了一个比Enumerated更好用的注解和方式&#xff09;。 不多说&#xf…

翻硬币(蓝桥杯C/C++B组真题详解)

目录 题目描述&#xff1a;1208. 翻硬币 - AcWing题库 题目思路&#xff1a; 代码详解&#xff1a; 题目描述&#xff1a;1208. 翻硬币 - AcWing题库 题目思路&#xff1a; 这题我们可以用模拟直接模拟操作 也可以直接推出规律 这里就讲解推出的规律 因为每次必须选择两个…

[附源码]计算机毕业设计二次元信息分享平台的设计及实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

[操作系统笔记]请求分页管理方式

内容系听课复习所做笔记&#xff0c;图例多来自课程截图 操作系统需要提供两大功能&#xff1a; 请求调页&#xff1a;缺失页面调入内存页面置换&#xff1a;暂时不用的换出外存 页表机制 原先的页式管理使用的页表并不能满足新的需求&#xff0c;因此需要为页表增加新的页表…

《垃圾回收算法手册 自动内存管理的艺术》——运行时接口(笔记)

文章目录十一、运行时接口11.1 对象分配接口11.1.1 分配过程的加速11.1.2 清零如何清零何时清零11.2 指针查找11.2.1 保守式指针查找11.2.2 使用带标签值进行精确指针查找11.2.3 对象中的精确指针查找11.2.4 全局根中的精确指针查找11.2.5 栈与寄存器中的精确指针查找11.2.6 代…

DI Blackfin DSP处理器-BF533的开发详解47:图像处理专题-Resize (图像缩放处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像缩放处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…