栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【JAVA】【刷题子】890. 查找和替换模式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVA】【刷题子】890. 查找和替换模式

一、题目与题目分析 题目

你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。

  如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。

  (回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)

  返回 words 中与给定模式匹配的单词列表。

  你可以按任何顺序返回答案。


  (题目来源:力扣:890. 查找和替换模式)

题目分析

简单的理解就是找匹配指定格式的单词;类似中文词语的匹配,AAB、ABB、AABB、ABAB、AABC等等这种指定格式。

二、整体逻辑与主要代码

题目分析已经比较清楚了,接下来我们进入代码设计。

整体逻辑

既然需要匹配的是指定格式(pattern),我们可以从字母表去入手。去定义两个字母表(记录26个字母),遍历单词(word)对应的字母;对比两个字母数组表对应的值是否已经赋过其他字母对应的值,有就说明该单词不匹配。

主要代码

整体逻辑清晰了之后,同时也有较清楚的注释。直接来看代码吧! (如有不懂的或者更好的建议,欢迎评论区分享友友的看法哈~)

class Solution {
	public List findAndReplacePattern(String[] words, String pattern) {
		// 定义匹配的结果List集
		List resList = new ArrayList();
		for (String word : words) { // 遍历所有单词
			if (isMatch(word, pattern)) {
				resList.add(word);
			}
		}
		return resList;
	}

	// 判断该单词是否匹配字典
	public boolean isMatch(String word, String pattern) {
		int[] wordAlphabet = new int[27]; // 新建记录单词的字母表
		int[] patternAlphabet = new int[27]; // 新建记录词典的字母表
		boolean rightFlag = true; // 标记符合的字母进行添加
		for (int i = 0; i < pattern.length(); i++) { // 遍历词典的每个字母
			// 记录单词的每个字母
			int wordNum = word.charAt(i) - 'a' + 1;
			// 记录词典的每个字母
			int patternNum = pattern.charAt(i) - 'a' + 1;
			if ((patternAlphabet[wordNum] != 0 
                        	&& patternAlphabet[wordNum] != patternNum)
				|| (wordAlphabet[patternNum] != 0 
                                && wordAlphabet[patternNum] != wordNum)) {
				// 对比两个字母数组表对应的值是否已经赋过其他字母对应的值,有就说明该单词不匹配
				rightFlag = false;
				break;
			}
			patternAlphabet[wordNum] = patternNum;
			wordAlphabet[patternNum] = wordNum;
		}
		return rightFlag;
	}
} 
三、结果展示

四、总结

如果事情可以简简单单的,那么就让它简简单单就好了。

题目数据库

Gitee:传送门

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》

  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号