//有一个字符串它的构成是词+空格的组合,如“北京 杭州 杭州 北京”,
//要求输入一个匹配模式(简单的以字符来写), 比如 aabb, 来判断该字符串是否符合该模式, 举个例子:
//1. pattern = “abba”, str=“北京 杭州 杭州 北京” 返回 ture
//2. pattern = “aabb”, str=“北京 杭州 杭州 北京” 返回 false
//3. pattern = “baab”, str=“北京 杭州 杭州 北京” 返回 ture

这道题还是比较简单的,pattern并不是正则表达式,str也不是说根据pattern的某种规律来推算,就是实打实的匹配。

思路:

  1. 首先要将pattern和str进行对应,不同的字母对应不同的词
  2. 其次,字母的出现的顺序应该和词出现的顺序一致
  3. 如果上述条件,任何一个不满足就匹配不成功
  4. 可以用map将对应关系进行保存下来,key=字母,val=词,挨个遍历pattern对应位置上的值,如果在map中存在,则比较val是否相等;如果不存在则将对应关系放入map中
  5. 但是有个漏洞:如果此时map中不存在,但是val中存在会返回true,这时需要在val中判断,之前是否有这个val,如果有则字母与词不匹配。

代码如下:

public static boolean wordPattern(String pattern, String str) {Map<Character, String> map = new HashMap<>();char[] ptArr = pattern.toCharArray();String[] strArr = str.split(" ");if (ptArr.length != strArr.length) {return false;}for (int i = 0; i < ptArr.length; i++) {String val = map.get(ptArr[i]);if (null != val) {if (!val.equals(strArr[i])) {return false;}} else {if (!map.values().contains(strArr[i])) {map.put(ptArr[i], strArr[i]);} else {return false;}}}return true;}

上面的代码还可以做个小小的优化,针对pattern和str可以判断下长度,如果长度都为1,直接返回true。

如果有更好的实现方式欢迎留言

阿里巴巴笔试题:匹配模式(简单的以字符来写), 比如 aabb, 来判断该字符串是否符合该模式相关推荐

  1. 以下c语言程序片段用于估测cpu的cache参数,阿里巴巴笔试题

    阿里巴巴笔试题 1.平均速度最快的排序算法是______. Shell排序 快速排序 冒泡排序 插入排序 2014-03-29 18:36:02 2.某服务进程的QPS(没秒处理的请求个数)较低,在空 ...

  2. 阿里巴巴笔试题:数据分析与建模测试

    阿里巴巴笔试题:数据分析与建模测试 请阅读以下文字答题. Field Descriptions: isbuyer - Past purchaser of product buy_freq - How ...

  3. 阿里巴巴笔试题,翻转数字

    阿里巴巴笔试题 翻转数字 下面是用我的原话复述的题目: 给定一个二进制字符串,只有01构成,我们可以对这个字符串的某一位进行翻转操作 翻转某一位代表把0变成1,或者1变成0:翻转一位的同时,它旁边的两 ...

  4. 2016阿里巴巴笔试题

    2016阿里巴巴笔试题 昨天刚刚考完阿里的秋季校招笔试.40分钟单选和60分钟开放题,选择题50%以上为数学题.还涉及到了操作系统,算法.整理例如以下: 选择题: (1)下列语句中描写叙述最正确的是_ ...

  5. 阿里巴巴笔试题,附带解析

    阿里巴巴面试题 1.  20个阿里巴巴B2B技术部的员工被安排为4排,每排5个人,我们任意选其中4人送给他们一人一本<effective c++>,那么我们选出的4人都在不同排的概率为: ...

  6. java笔试题_一道简单的 Java 笔试题,但值得很多人反思

    专注于Java领域优质技术,欢迎关注 作者:匿蟒 前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问 ...

  7. python简单笔试题_python编程简单笔试题

    Python编程简单的书面测试问题,答案,适合初学者学习和使用.内部信息,严禁传播指数+ = 1.你需要的代码线03年和06郑史.如何正确的代码?使用下拉菜单中选择选项为每个问题的答案的基础上提供的信 ...

  8. 最新上海阿里巴巴笔试题分享

    今天(2013/9/22)去了阿里巴巴笔试,现在靠记忆复述考点大致如下: 选择题,注意做错要扣分,比如不定项选择全对得5分,少选得2分,不做0分,多选或选错扣2分,(这好像是从外企学过来的==)大概是 ...

  9. 阿里巴巴笔试题-马尔科夫(HMM)的特征

    Hidden Markov model (HMM) 一.马尔科夫转移矩阵法的涵义  单个生产厂家的产品在同类商品总额中所占的比率,称为该厂产品的市场占有率.在激烈的竞争中,市场占有率随产品的质量.消费 ...

最新文章

  1. 调用ajax后页面为什么会刷新,为什么页面在JQuery ajax调用之后重新加载?
  2. MFC串口通信上位机(采用静态库编译生成的)不能在其他电脑运行的问题
  3. [IE9] GPU硬件加速到底是实用创新还是噱头
  4. Zepto Click点透情况解决办法
  5. 云服务器 VNC 远程连接
  6. webstrom使用方法
  7. Qt实现Linux下模拟点击界面,如何利用QT实现模拟鼠标点击?
  8. ABP理论之CSRF
  9. 【转】Mac下升级python2.7到python3.6
  10. 关于SVN出现 svn working copy locked的原因及解决方法
  11. CSS中强大的EM(转)
  12. 教你如何写初/高级前端简历【全新web前端入门视频教程】
  13. 爬取今日头条街拍美女图片
  14. 酬乐天扬州初逢席上见赠
  15. 轻松自动化---selenium-webdriver(python) (八)
  16. 如何用百度离线API调用百度离线地图
  17. win10看视频全屏底边任务栏还在
  18. 《重构》第七章--读书笔记
  19. HDU-OJ 杭电1495非常可乐
  20. 使用 JABX 将 Map<String,String> 序列化成 <key>value</key>形式的字符串

热门文章

  1. 2022阿里云金秋上云双十一轻量服务器2核2G 2核4G
  2. 数据结构之抽象数据类型(C语言实现)
  3. 父组件传值给子组件子组件向父组件传值的方法
  4. 【javaCV基于虹软人脸识别demo添加电脑摄像头人脸识别(图片保存,视频保存,摄像头显示等 )(附源码)】
  5. python嵌套字典查找元素_在python中的嵌套json字典中查找值
  6. 入职链家前自己给自己做的一个竞品分析
  7. cpu倍频模式怎么调_CPU如何超频 超多了真会烧么? 每日一答
  8. 计算机主机降温,电脑CPU降温软件真的可以降温吗?
  9. C语言内存使用的常见问题及解决之道
  10. Java程序员不可不知的几个网站,你去过几个?