确定字符串是否是另一个的排列+压缩字符串+分发饼干
创始人
2024-03-16 19:09:44
0

目录

确定字符串是否是另一个的排列

题目描述

方法一(开辟四个数组,要有大小写):

方法二(排列):

方法3(越来越短) 

压缩字符串

题目描述

代码

分发饼干

题目描述

思路分析:

 


确定字符串是否是另一个的排列

题目描述


实现一个算法来识别一个字符串 str2str2 是否是另一个字符串 str1str1 的排列。排列的解释如下:如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。(不忽略大小写)

如果 str2 字符串是 str1 字符串的排列,则输出 YES;如果 str2 字符串不是 str1 字符串的排列,则输出 NO;

输入描述
第一行为字符串str1;

第二行为字符串str2;

字符串长度均不超过 100。

输出描述;
输出一行,如果 str2 字符串是 str1 字符串的排列,则输出 YES;

如果 str2 字符串不是 str1 字符串的排列,则输出 NO;

输入输出样例
示例
输入

acb
bac

输出

YES

运行限制
最大运行时间:1s
最大运行内存: 256M

方法一(开辟四个数组,要有大小写):

import java.awt.geom.Arc2D;
import java.util.Scanner;public class Main {static int[] c1=new int[26],c2=new int[26];static int[] c3=new int[26],c4=new int[26];public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s=sc.next();String t=sc.next();for(int i=0;i'Z')	c2[c-'a']++;else c1[c-'A']++;}for(int i=0;i'Z')	c4[c-'a']++;else c3[c-'A']++;}for(int i=0;i<26;i++) {if(c2[i]!=c4[i]||c1[i]!=c3[i]) {System.out.println("NO");return;}}System.out.println("YES");}
}

方法二(排列):


import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[] s=sc.next().toCharArray();char[] t=sc.next().toCharArray();Arrays.sort(s);Arrays.sort(t);if(s.length!=t.length) {System.out.println("NO");return;}for(int i=0;i

方法3(越来越短) 


import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[] s=sc.next().toCharArray();char[] t=sc.next().toCharArray();Arrays.sort(s);Arrays.sort(t);String s1=new String(s);String t1=new String(t);System.out.println(s1.equals(t1)?"YES":"NO");}
}

压缩字符串

题目描述


实现一个算法来压缩一个字符串。压缩的要求如下:

需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。

压缩的格式是将连续相同字符替换为字符 + 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。

输入描述
输入一行字符串,长度不超过 500.

输出描述
输出一行。若输入的字符串可压缩,则输出压缩后的字符串,否则输出 NO。

输入输出样例
示例
输入

AAABCCDDDD

输出

A3BC2D4

运行限制
最大运行时间:1s
最大运行内存: 256M

代码


import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[] s=sc.next().toCharArray();boolean f=false;for(int i=1;i1) sb.append(len);i=j+1;}System.out.println(sb);}
}

分发饼干

题目描述


实现一个算法找到使最多孩子得到满足的分发饼干方法。介绍如下:

家长要将饼干分发给孩子,每个孩子有一个表示胃口的值,每个饼干有一个表示尺寸的值。如果饼干的尺寸与孩子的胃口相等或大于胃口,则将这个饼干分发给这个孩子,孩子能得到满足。

对于给定孩子及饼干的数组,需要将饼干分发给孩子,使最多的孩子得到满足。

例如孩子数组为 [1, 2, 3],饼干数组为 [1, 1],则将尺寸为 1 的饼干分发给胃口为 1 的孩子,这个孩子将得到满足,而另外的两个孩子无法得到满足。那么得到满足的孩子个数为 1 个。

输入描述
第一行输入两个整数 N,M (1 <= N,M <= 1000)。N 表示孩子数量,M 表示饼干数量。

第二行输入孩子数组 A,Ai 
  表示第 i 个孩子胃口。

第三行输入饼干数组 B,Bi
  表示第 i 块饼干的尺寸。

输出描述
输出一行,为得到满足的孩子个数。

输入输出样例
示例
输入

3 2
1 2 3
1 1

输出

1

运行限制
最大运行时间:1s
最大运行内存: 256M

思路分析:

饼干是不是想尽量喂饱需求更大的孩子?

能不能用当前最大的饼干去喂需求量最大的孩子?如果最大的饼干不能喂需求最大的孩子说明该孩子不能吃饱

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();//a孩子 b饼干int[] a=new int[n];int[] b=new int[m];for(int i=0;i=0&&r>=0) {//当前最大的饼干可以满足当前最大需求的孩子if(b[r]>=a[l]) {ans++;r--;l--;}else {//孩子喂不饱l--;}}System.out.println(ans);}
}

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...