【算法刷题记录(简单题)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");
	}
}
相关推荐
mldong3 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
tqs_123454 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃4 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
浪子明X4 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
v_34836087625 小时前
Android native端 堆栈打印
android·算法
residual_fan5 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
Flynt5 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet5 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea5 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持5 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信