(java)Word Pattern
2015-12-29 09:18
405 查看
Given a
find if
Here follow means a full match, such that there is a bijection between a letter in
a non-empty word in
Examples:
pattern =
pattern =
pattern =
pattern =
Notes:
You may assume
lowercase letters separated by a single space.
思路:本题就是实时维护一个数据字典,现有字典里如果有pattern中对应的元素,则判断str中对应位置的子串是否与字典中的一样,如果没有,则将此匹配规则加入到字典中。
注意:在字典中的索引项没有pattern中对应的位置的字母时,还要判断此字母在str中对应的子串是否在字典有含有
代码如下(已通过leetcode)
public class Solution {
public boolean wordPattern(String pattern, String str) {
String[] strs=str.split(" ");
if(pattern.length()!=strs.length) return false;
String temp="";
Map<Character,String>map=new HashMap<Character,String>();
for(int i=0;i<strs.length;i++) {
if(map.containsKey(pattern.charAt(i)))
{
if(map.get(pattern.charAt(i)).equals(strs[i])) temp+=strs[i];
else return false;
}
else {
if(map.containsValue(strs[i])) return false;
else {
map.put(pattern.charAt(i), strs[i]);
temp+=strs[i];
}
}
temp+=" ";
}
temp=temp.substring(0, temp.length()-1);
System.out.println(temp);
if(str.equals(temp)) return true;
else return false;
}
}
patternand a string
str,
find if
strfollows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in
patternand
a non-empty word in
str.
Examples:
pattern =
"abba", str =
"dog cat cat dog"should return true.
pattern =
"abba", str =
"dog cat cat fish"should return false.
pattern =
"aaaa", str =
"dog cat cat dog"should return false.
pattern =
"abba", str =
"dog dog dog dog"should return false.
Notes:
You may assume
patterncontains only lowercase letters, and
strcontains
lowercase letters separated by a single space.
思路:本题就是实时维护一个数据字典,现有字典里如果有pattern中对应的元素,则判断str中对应位置的子串是否与字典中的一样,如果没有,则将此匹配规则加入到字典中。
注意:在字典中的索引项没有pattern中对应的位置的字母时,还要判断此字母在str中对应的子串是否在字典有含有
代码如下(已通过leetcode)
public class Solution {
public boolean wordPattern(String pattern, String str) {
String[] strs=str.split(" ");
if(pattern.length()!=strs.length) return false;
String temp="";
Map<Character,String>map=new HashMap<Character,String>();
for(int i=0;i<strs.length;i++) {
if(map.containsKey(pattern.charAt(i)))
{
if(map.get(pattern.charAt(i)).equals(strs[i])) temp+=strs[i];
else return false;
}
else {
if(map.containsValue(strs[i])) return false;
else {
map.put(pattern.charAt(i), strs[i]);
temp+=strs[i];
}
}
temp+=" ";
}
temp=temp.substring(0, temp.length()-1);
System.out.println(temp);
if(str.equals(temp)) return true;
else return false;
}
}
相关文章推荐
- RXJAVA操作符
- Eclipse构建Maven项目
- Eclipse、MyEclipse使用git插件(egit)
- spring中freemarker自定义标签详解
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- [javase学习笔记]-7.9 成员变量与静态变量的区别
- java项目部署总结(一)JDK 、git、maven、ssh等安装与配置
- Java2.1
- 多线程1.50的特性
- spring-in-action-mvc-mybatis
- 关于使用cmd编译java文件出现乱码现象解决方法
- Java 多线程:多线程产生的原因
- hadoop 之eclipse插件定做
- eclipse--解决Android模拟器端口被占用问题的办法
- Java并发同步器--CountDownLatch
- java的流和编码
- 基于javaConfig的springDataJpa+dubbo+springMvc搭建(一)
- java 子类重载父类
- java equals
- java开发中如何使用JVisualVM进行性能分析