【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)

一、题目描述

复制代码
对于给定的字符串 s 和 t ,检查 s 中的所有字符是否都在 t 中出现。

(一)输入描述

复制代码
第一行输入一个长度为 1 ≤ len(s) ≤ 200、仅由小写字母组成的字符串 s。
第二行输入一个长度为 1 ≤ len(t) ≤ 200、 仅由小写字母组成的字符串 t。

(二)输出描述

复制代码
如果 s 中的所有字符都在 t 中出现,则输出 true,否则输出 false。

(三)示例

java 复制代码
输入:bc
     abc
输出:true

二、题目解答

(一)解题思路

1.使用HashMap统计字符串 s 中字符,如字符 a 出现则利用put方法将键值对(a,1)存入 map 中(注:a 重复出现存入的 value 值仍为1)。

2.使用HashMap的 put 方法统计 t 中的字符是否在 s 中出现,假设字符 a 在 t 中 出现,则将键值对(a,map.getOrDefault(a, 0))存入。

3.遍历 map.value() ,如存在为1的 value ,则代表 s 中存在 t 中没有的字符,则输出 f ,否则输出 t。

(二)代码实现

java 复制代码
import java.util.*;
public class Main {
	public static void main(String[] args){
		//读取字符串S和t
		Scanner in = new Scanner(System.in);
		String s = null;
		String t = null;
		
		s = in.nextLine();
		t = in.nextLine();
		
		//将s中的字符存入HashMap中
		Map<Character,Integer> map = new HashMap<>();
		for(Character c : s.toCharArray()){
			map.put(c, 1);
		}
		//统计t中的字符是否在s中出现
		for(Character c : t.toCharArray()){
			map.put(c, map.getOrDefault(c, 0)-1);
		}
		//遍历HashMap.value(), 如存在1则表明s中存在t中没有的字符
		for(int a : map.values()){
			if(a == 1){
				System.out.print("false");
				System.exit(0);//此处不能使用break;因为break只会终止循环,不会终止程序。
			}
		}
		System.out.print("true");
	}
}
相关推荐
行百里er15 小时前
用 ThreadLocal + Deque 打造一个“线程专属的调用栈” —— Spring Insight 的上下文管理术
java·后端·架构
jllllyuz15 小时前
基于MATLAB的二维波场模拟程序(含PML边界条件)
开发语言·matlab
leo__52015 小时前
基于MATLAB的交互式多模型跟踪算法(IMM)实现
人工智能·算法·matlab
忆锦紫15 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab
玄〤15 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot
t1987512816 小时前
基于自适应Chirplet变换的雷达回波微多普勒特征提取
算法
guygg8816 小时前
采用PSO算法优化PID参数,通过调用Simulink和PSO使得ITAE标准最小化
算法
老鼠只爱大米16 小时前
LeetCode算法题详解 239:滑动窗口最大值
算法·leetcode·双端队列·滑动窗口·滑动窗口最大值·单调队列
J_liaty16 小时前
Spring Boot拦截器与过滤器深度解析
java·spring boot·后端·interceptor·filter
mit6.82416 小时前
序列化|质数筛|tips|回文dp
算法