网站开发合同里的坑,分销网络建设,网站建设挣钱 知乎,整体vi设计文章目录 383. 赎金信205. 同构字符串290. 单词规律 383. 赎金信
给你两个字符串#xff1a;ransomNote 和 magazine #xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以#xff0c;返回 true #xff1b;否则返回 false 。
magazine 中的每个字符… 文章目录 383. 赎金信205. 同构字符串290. 单词规律 383. 赎金信
给你两个字符串ransomNote 和 magazine 判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以返回 true 否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
class Solution {public boolean canConstruct(String ransomNote, String magazine) {if(ransomNote.length() magazine.length()){return false;}int[] cnt new int[26];for(char c : magazine.toCharArray()){cnt[c - a];}for(char c : ransomNote.toCharArray()){cnt[c - a]--;if(cnt[c - a] 0){return false;}}return true;}
}205. 同构字符串
给定两个字符串 s 和 t 判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符同时不改变字符的顺序。不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身。
class Solution {public boolean isIsomorphic(String s, String t) {MapCharacter, Character s2t new HashMapCharacter, Character();MapCharacter, Character t2s new HashMapCharacter, Character();int len s.length();for(int i 0; i len; i){char x s.charAt(i), y t.charAt(i);if((s2t.containsKey(x) s2t.get(x) ! y) || (t2s.containsKey(y) t2s.get(y) ! x)){ //当字符重复时查看由键所得的值是否匹配return false;}s2t.put(x, y);t2s.put(y, x);}return true;}
}290. 单词规律
给定一种规律 pattern 和一个字符串 s 判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配例如 pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
class Solution {public boolean wordPattern(String pattern, String str) {MapString, Character str2ch new HashMapString, Character();MapCharacter, String ch2str new HashMapCharacter, String();int m str.length();int i 0;for(int p 0; p pattern.length(); p){char ch pattern.charAt(p);if(i m){return false;}int j i;while(j m str.charAt(j) ! ){j;}String tmp str.substring(i, j);if(str2ch.containsKey(tmp) str2ch.get(tmp) ! ch){return false;}if(ch2str.containsKey(ch) !tmp.equals(ch2str.get(ch))){return false;}str2ch.put(tmp, ch);ch2str.put(ch, tmp);i j 1;}return i m;}
}