题目
给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。
这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。
示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, str = “dog cat cat fish”
输出: false
示例 3:
输入: pattern = “aaaa”, str = “dog cat cat dog”
输出: false
示例 4:
输入: pattern = “abba”, str = “dog dog dog dog”
输出: false
说明:
你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。
代码
class Solution {
public boolean wordPattern(String pattern, String str) {
String[] r = new String[27];
String[] strSplited = str.split(" ");
int len = pattern.length();
if(len != strSplited.length) return false;
for(int i=0; i<len; i++){
int j = pattern.charAt(i)-97;
if(r[j]==null){
r[j] = strSplited[i].trim();
}
else{
if(r[j].compareTo(strSplited[i])!=0) return false; //千万记住,字符串比较大小不是直接用==,而是使用equals或者compareTO
}
}
//看是否有重复的元素
for(int i=0;i<26;i++){
if(r[i]!=null){
System.out.println(i);
for(int j=i+1;j<26;j++){
if(r[j]!=null){
if(r[j].equals(r[i])) return false;
}
}
}
}
return true;
}
}