《剪花布条》:从花布条中尽可能剪出几块小饰条

news2024/11/24 19:13:04

目录

一、题目

二、思路

1、代码中要使用的String类中的方法 

(1)判断 s 中是否有 t 

(2)将 s 分割  

2、递归判断

三、代码

详细注释版本

简化注释版本


 

一、题目

题目:剪花布条           题目链接:剪花布条

一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 

输入描述:
        输入包含多组数据。

        每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。

输出描述:
        对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。
输入
abcde a3
aaaaaa aa
输出
0
3

二、思路

        主要是递归(大规模问题化解为相同的小规模问题),以及方法的使用。

        要判断 s 中有几个 t ,从前向后判断,每遇到一个 t,结果值就+1。然后再将 t 从 s 中全部切除(也包含前面的不是 t 的,因为不是 t,所以和我们的结果值就无关了,就可以切掉)。然后再判断剩下的 s 中 有几个 t。以此类推。

1、代码中要使用的String类中的方法 

(1)判断 s 中是否有 t 

  • s.indexOf( t ):从前向后判断,s 中是否有 t。有则返回 t 所在的下标,如果没有就返回 -1。

注意:传入的参数 t 可以是字符,也可以是字符串。当时字符串时,返回的是 t 的首字符所在的下标。

(2)将 s 分割  

s.substring( ):返回字符串的子字符串。传入的参数有两种形式:

  • s.substring( int index ):切除 index 下标之前的字符串。(删除前 index 个字符)
  • s.substring( int beginIndex, int endIndex ):返回下标[ beginIndex, endIndex ) 内的字符串。

2、递归判断

        根据 indexOf 方法的返回值进行判断,如果不为 -1,就进行递归。为 -1,就返回0 。

三、代码

详细注释版本

import java.util.*;
public class Main {
    private static int func(String str1, String str2) {
        //str1.indexOf(str2)方法:查找str1中str2的下标,若str1中没有str2,就返回-1
        //当查找的是字符串时,返回的是str2首字符在str1中的下标
        int i =str1.indexOf(str2);
        if(i == -1) {
            //说明str1中没有str2
            return 0;
        }
        //str1中有str2,则在str1中将满足的前半部分(包括包含的str2)切除
        //再判断str1中剩下的部分有没有str2,然后重复操作。
        //将大规模问题化成了相同的小规模问题,因此可以使用递归
        //1 是因为代码执行到这里说明 i!=-1,即肯定是有一个str2的,所以加一
        return 1 + func(str1.substring(i + str2.length()),str2);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String str1 = sc.next();
            String str2 = sc.next();
            int ans = func(str1,str2);
            System.out.println(ans);
        }
    }
}

简化注释版本

import java.util.*;
/**
 * Created with IntelliJ IDEA.
 * Description:剪花布条
 * User: WangWZ
 * Date: 2023-04-13
 * Time: 14:53
 */
public class Main {
    private static int func(String str1, String str2) {
        int i =str1.indexOf(str2);
        if(i == -1) {
            return 0;
        }
        //判断str1中剩下的部分有没有str2,递归
        return 1 + func(str1.substring(i + str2.length()),str2);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            String str1 = sc.next();
            String str2 = sc.next();
            int ans = func(str1,str2);
            System.out.println(ans);
        }
    }
}

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

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

相关文章

8、DRF实战总结:分页(Pagination)及DRF提供的分页类详解(附源码)

在前面的DRF系列教程中,以博客为例介绍了序列化器, 使用基于类的视图APIView和ModelViewSet开发了针对文章资源进行增删查改的完整API接口,并详细对权限和认证(含jwt认证)进行了总结与演示。在本篇文章中将向演示如何在Django REST Framework中使用分页。…

【MySQL】进阶查询-聚合查询和联合查询

文章目录1. 前言2. 表的设计2.1 一对一2.2 一对多2.3 多对多3.将查询结果放到另一个表中4. 聚合查询4.1 聚合函数4.2 GROUP BY4.3 HAVING5. 联合查询(多表查询)5.1 内连接5.2 外连接5.3 自连接5.4 子查询5.5 合并查询6. 总结1. 前言 文章主要围绕着以下三个问题: group by的作…

zookeeper介绍和搭建

zookeeper介绍和搭建一、zookeeper简介二、zookeeper工作机制三、zookeeper集群部署3.1 实验准备3.2 修改配置文件3.3 创建目录以及拷贝文件3.4 配置Zookeeper启动脚本3.5 查看启动状态一、zookeeper简介 1、zookeeper概念 ZooKeeper是一种为分布式应用所设计的高可用、高性能…

尚融宝20-实现用户注册和用户认证

目录 一、需求 二、前端整合发送验证码 三、实现用户注册 1、创建VO对象 2、定义常量 3、引入MD5工具类 4、Controller 5、Service 6、前端整合 四、实现用户登录 1、后端整合JWT 2、前端整合 五、校验用户登录 1、后端 2、前端 一、需求 二、前端整合发送验证码…

数据结构———一万字手撕八大排序算法

常见的排序算法1.排序算法的作用1.1列如我们在购物时1.2玩游戏时英雄战力的排行,都得用到排序算法2.常见排序算法的实现2.1冒泡排序时间复杂度计算:2.2直接插入排序时间复杂度计算:2.3选择排序时间复杂度计算:2.4希尔排序⭐时间复…

Qt音视频开发28-ffmpeg解码本地摄像头(yuv422转yuv420)

一、前言 一开始用ffmpeg做的是视频流的解析,后面增加了本地视频文件的支持,到后面发现ffmpeg也是支持本地摄像头设备的,只要是原则上打通的比如win系统上相机程序、linux上茄子程序可以正常打开就表示打通,整个解码显示过程完全一样,就是打开的时候要传入设备信息,而且…

Prophet学习(五)季节性、假日效应和回归因子

​ 编辑目录 假期和特殊事件建模(Modeling Holidays and Special Events) 内置国家假日(Built-in Country Holidays) 季节性的傅里叶级数(Fourier Order for Seasonalities) 指定自定义季节&#xff08…

启动neo4j备忘录

做个备忘录 Neo4j下载、安装、环境配置 优秀教程:https://blog.csdn.net/zeroheitao/article/details/122925845 Neo4j环境变量配置 1、安装JDK 由于Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。配置…

【数据结构】反射

文章目录🌷 1 定义🌷 2 用途(了解)🌷 3 反射基本信息🌷 4 反射相关的类🌳 4.1 Class类(反射机制的起源)Class类中的相关方法🌳 4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用⭐️反射使用1&a…

3个宝藏级软件,每一个都超级好用,少装一个跟你急

分区助手 下载地址:https://www.disktool.cn/ 很多新手小白使用电脑都不懂,把所有软件都安装到了C盘,时间久了储存的东西变多,C盘空间着实不够用,这个免费的工具可以帮你重新分区,无损数据地执行。除了无损…

腾讯云8核16G18M轻量服务器CPU带宽流量性能测评

腾讯云轻量应用服务器8核16G18M带宽,18M公网带宽下载速度峰值可达2304KB/秒,相当于2.25M/s,系统盘为270GB SSD盘,3500GB月流量,折合每天116GB流量。腾讯云百科分享腾讯云轻量服务器8核16G18M配置、CPU型号、公网带宽月…

ChatGPT资讯—2023.4.3

一、 最新资讯 1. UC伯克利开源大语言模型Vicuna又来了 Vicuna-13b只需要花费300美刀(比Alpaca的600美元便宜一半)就能搞出来接近ChatGPT的水平。如何用小资源大模型让个人普通者与中小微企业也能用上高科技一直是开源社区孜孜追求的目标 Vicuna开源代…

ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系

数字化转型中少不了ERP系统的存在,CRM/MRP/PLM/APS/MES/WMS/SRM这些都需要一起上吗? 如下图所示,是某企业IT系统集成架构流图。 先了解一下ERP是做什么的,ERP就是企业资源管理系统,从企业的价值链分析,企业…

用机器学习sklearn+opencv-python过古诗文网4位数字+字母混合验证码

目录 获取验证码图片 用opencv-python处理图片 制作训练数据集 训练模型 识别验证码 编写古诗文网的登录爬虫代码 总结与提高 源码下载 在本节我们将使用sklearn和opencv-python这两个库过掉古诗文网的4位数字字母混合验证码,验证码风格如下所示。 验证码获…

分库分表介绍以及shardingjdbc实现分库分表

分库分表概念 一、什么是分库分表 分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。 分库分表是由分库和分表这两个独立概念组成的,只不过通常分库与分表的操作会同时进行&…

还不懂怎么设计超时关单?一文告诉你!

背景介绍 ​ 提交订单,是交易领域避不开的一个话题。在提交订单设计时,会涉及到各种资源的预占:如商品库存、优惠券数量等等。但是,下单的流程并不能总是保证成功的,如商品库存异常的时候被拦截、优惠券数量不足的时候…

3月更新 | Visual Studio Code Python

我们很高兴地宣布,2023年3月版 Visual Studio Code Python 和 Jupyter 扩展现已推出! 此版本包括以下改进: 后退按钮和取消功能添加到创建环境命令默认情况下,Python 扩展不再附带 isortJupyter 笔记本中内核选择的改进Python P…

Modbus 协议详解

Modbus 协议详解 通信协议是指双方实体完成通信或服务所必须遵循的规则和约定,例如我们为实现人与人之间的交流需要约定统一的语言,统一的文字,规定语速等等。 而对于设备之间,协议定义了数据单元使用的格式(例如大端…

四、数组、切片,映射

一、一维数组 //声明一个包含5个元素的整型数组 var array [5]int //具体数值填充数组 array : [5]int{1, 2, 3, 4, 5} //容量由初始化值的数量决定 array : [...]int{1, 2, 3, 4, 5) //只初始化索引为1和2的元素 array : [5]int{1: 10, 2: 20} //修改索引为2的元素的值 array…

Linux文件系统、虚拟内存、进程与线程、锁

文章目录文件系统suLinux 中默认没有 super 命令/proc/etc/var/root/home/bin/dev/lib/sbintmp句柄maxfdPWDpathhomeexportwdfdu虚拟内存jobsLinux下一切皆文件swaponmkswap进程与线程nohup子进程与父进程unix进程间的通信方式线程的同步方式sedtarhistory硬链接ln(…