题目描述:
给定一种规律pattern和一个字符串str,判断str是否遵循相同的规律。这里的遵循是指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应规律。
比如:pattern = "abba" , str = "dog cat cat dog",此时遵循相同的规律,输出为true。
算法思想:
如果字符串str中非空字符的长度不等于字符串pattern的长度,则两者就不可能遵循相同的规律;否则,遍历字符串,判断对应规律是否相同,若存在不相同,则两者不遵循相同的规律。
算法java实现:
public static boolean wordPattern(String pattern, String s) {
String[] array = s.split(" ");
if (array.length != pattern.length()){
return false;
}
for (int i=0;i<pattern.length()-1;i++){
for (int j=i+1;j<pattern.length();j++){
if (pattern.charAt(i) == pattern.charAt(j)){
if (!array[i].equals(array[j])) {
return false;
}
}else {
if (array[i].equals(array[j])) {
return false;
}
}
}
}
return true;
}
- 值得注意的是判断字符串是否相等,最好使用equals()方法
- java使用==和equals()判断字符串是否相等
算法分析:
- 时间复杂度:O(n2),假设字符串长度为n
- 空间复杂度:O(n)