java - 匹配数组模式算法
问题描述
给定 2 个数组a = [b,b,c]和数组 e = [o,o,p],它们相互匹配,但它们不匹配数组,如[x,y,y]或[a,b,c ] . 作为工作测试的一部分,我被要求用 Java 编写一个(可能是递归的)算法。
解决方案
您可以查看这段代码:-
import java.util.HashMap;
import java.util.Map;
public class MatchPatterns {
public static void main(String ani[]) {
char[] a= {'b','b','c'};
char[] b= {'o','o','p'};
System.out.println(doTheyMatch(a, b));
}
private static boolean doTheyMatch(char[] a, char[] b) {
if(a.length != b.length) {
return false;
}
int aInteger[] = new int[a.length];
Map<Character, Integer> map = new HashMap<>();
int charRepresentator = 0;
for(int i =0 ;i <a.length; i++) {
if(map.containsKey(a[i])){
aInteger[i] = map.get(a[i]).intValue();
}else {
map.put(a[i], charRepresentator);
aInteger[i] = charRepresentator;
charRepresentator++;
}
}
int bInteger[] = new int[b.length];
map = new HashMap<>();
charRepresentator = 0;
for(int i =0 ;i <b.length; i++) {
if(map.containsKey(b[i])){
bInteger[i] = map.get(b[i]).intValue();
}else {
map.put(b[i], charRepresentator);
bInteger[i] = charRepresentator;
charRepresentator++;
}
}
for(int i =0 ;i < aInteger.length; i++) {
if(aInteger[i] != bInteger[i]) {
return false;
}
}
return true;
}
}
推荐阅读
- java - 具有全局变量的 Java 多线程
- c# - NuGet 私有服务器中的 DLL 缺少依赖项
- python - 在我的虚拟环境中成功安装 pikepdf 后无法导入它
- python - 将文本文件转换为字典时跳过行
- javascript - Webpack:从多个目录构建应用程序
- javascript - 我无法在 Vue.js 中连接 Firebase 实时数据库
- java - createStatement() 返回 null 而不是获取查询并创建语句
- c# - C# AutoMapper 在自定义映射器中获取目标类型
- excel - 为数据透视图转换 Excel VBA
- reactjs - React 克隆的元素不会随状态更新