哈希算法实现python给定一种规律pattern和一个字符串str
时间: 2023-11-26 18:04:55 浏览: 96
,判断这个字符串是否遵循这个规律。你可以使用正则表达式或者哈希表来实现。请问,你知道如何使用哈希表来实现吗?
很高兴回答你的问题!对于哈希表来说,我们可以将pattern和str的对应关系存储在一个字典中,然后遍历pattern和str,逐一比较它们对应的值是否相等。如果不相等,则说明不符合规律。如果遍历完整个pattern和str,都没有发现不符合规律的情况,那么就说明这个字符串遵循这个规律。
相关问题
给定一种规律pattern
,和一个字符串str,判断这个字符串是否符合这个规律。例如,给定规律 "abab",字符串 "redblueredblue" 符合这个规律,而 "redlue" 不符合。
答案:这个问题可以使用哈希表来解决。首先将规律和字符串都转换成字符数组,然后判断它们的长度是否相等,如果不相等直接返回false。接着,遍历字符数组,对于规律中的每个字符,将其作为key,查看哈希表中是否存在对应的value,如果存在,则将此字符在字符串中对应的部分取出来,与哈希表中的值比较是否相等,如果不相等则返回false;如果不存在,则将此字符作为key,将字符串中对应的部分作为value存入哈希表中。遍历完成后,如果没有返回false,则说明符合规律,返回true。
Java写给定一种规律pattern和一个字符串str,判断这个字符串是否符合这个规律。例如,给定规律 "abab",字符串 "redblueredblue" 符合这个规律,而 "redlue" 不符合。
这个问题可以使用哈希表来解决。首先,将字符串str使用空格割成每个单词,同时将规律转化为数组。然后,我们逐一较每个单词和pattern中的字符是否匹配,如果匹配,则返回false。如果匹配,则将单词和pattern中的字符都存入哈希表中,以便后续的匹配。如果最后哈希表中的键值对个数不等于单词个数或者pattern中的字符个数,也返回false。否则,返回true。以下是Java代码实现:
public boolean wordPatternMatch(String pattern, String str) {
String[] words = str.split(" ");
if (words.length != pattern.length()) {
return false;
}
Map<Character, String> map = new HashMap<>();
for (int i = 0; i < words.length; i++) {
char c = pattern.charAt(i);
String w = words[i];
if (map.containsKey(c)) {
if (!map.get(c).equals(w)) {
return false;
}
} else {
if (map.containsValue(w)) {
return false;
}
map.put(c, w);
}
}
return true;
}
阅读全文