小知识,大挑战!本文正在参与「程序员必备小知识」创作活动
本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
点赞再看,养成习惯。微信搜索【一条coding】关注这个在互联网摸爬滚打的程序员。
本文收录于github-技术专家修炼,里面有我的学习路线、系列文章、面试题库、自学资料、电子书等。
我看看是谁不理解题目意思的,哦,原来是我.jpg
——leetcode此题热评
前言
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
《糊涂算法》专栏上线倒计时——7天
Question
难度:简单
给定一种规律 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 包含了由单个空格分隔的小写字母。
Solution
Code
所有
leetcode代码已同步至github欢迎
star
/**
* @author 一条coding
*/
class Solution {
public boolean wordPattern(String pattern, String s) {
HashMap <Character,String> mp = new HashMap<>();
char[] pattern_chars=pattern.toCharArray();
String[] ss = s.split(" "); //按空格分割字符串
if(pattern_chars.length!=ss.length)return false;//长度都不对应直接false
int i=0;
for(char a : pattern_chars){
if(!mp.containsKey(a)){
if(!mp.containsValue(ss[i])){ //对应value已存在但key值不同
mp.put(a,ss[i++]);
}
else return false;
}
else {//对应key值已存在但value不同,注意比较要用equals,用!=结果不对
if(!Objects.equals(mp.get(a), ss[i++])) return false;
}
}
return true;
}
}
Result
复杂度分析
- 时间复杂度:O(N)
Last
独脚难行,孤掌难鸣,一个人的力量终究是有限的,一个人的旅途也注定是孤独的。当你定好计划,怀着满腔热血准备出发的时候,一定要找个伙伴,和唐僧西天取经一样,师徒四人团结一心才能通过九九八十一难。 所以,
如果你也想进大厂,
想学好数据结构和算法,
想坚持刷题,
想有一群志同道合的伙伴,
请加入组队刷题