当前位置: 首页 > news >正文

长沙市天心区建设局网站百度400电话

长沙市天心区建设局网站,百度400电话,网站建设与维护可行性报告,用什么框架做网站快❓205. 同构字符串 难度:简单 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同…

❓205. 同构字符串

难度:简单

给定两个字符串 st ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = “egg”, t = “add”
输出:true

示例 2:

输入:s = “foo”, t = “bar”
输出:false

示例 3:

输入:s = “paper”, t = “title”
输出:true

提示:

  • 1 < = s . l e n g t h < = 5 ∗ 1 0 4 1 <= s.length <= 5 * 10^4 1<=s.length<=5104
  • t.length == s.length
  • st 由任意有效的 ASCII 字符组成

💡思路:

法一:定长数组

由于 st 由任意有效的 ASCII 字符组成,ASCII 对应的十进制为 0 ~ 255,所以可以定义两个长度为256的数组,就能包括所有字符:

  • 数组中记录一个字符上一次出现在字符串中的位置;
  • 如果两个字符串中的字符上一次出现的位置一样,那么就属于同构。

法二:哈希表

由于不同字符不能映射到同一个字符上,所以两个字符串的映射关系都必须一一对应,不能出现一对多的情况,这里设置两个哈希表,分别存储两个字符串中已建立映射关系的字符:

  • 同时遍历字符串 s 和字符串 t 的相同位置,建立映射关系;
  • 如果s 的字符已经在哈希表中,则判断t对应位置的字符是否等于哈希表中的映射,如果不等,则返回false,相等则继续遍历。
  • 如果字符串 st 的字符都不在哈希表中,则将st对应位置的映射关系存储到哈希表中;
  • 否则不是同构字符串,返回false
  • 最后返回true

🍁代码:(Java、C++)

法一:定长数组
Java

class Solution {public boolean isIsomorphic(String s, String t) {int[] preIndexOfS = new int[256];int[] preIndexOfT = new int[256];for(int i = 0; i < s.length(); i++){char sc = s.charAt(i), tc = t.charAt(i);if(preIndexOfS[sc] != preIndexOfT[tc]){return false;} preIndexOfS[sc] = i + 1;preIndexOfT[tc] = i + 1;}return true;}
}

C++

class Solution {
public:bool isIsomorphic(string s, string t) {vector<int> preIndexOfS(256);vector<int> preIndexOfT(256);for (int i = 0; i < s.size(); i++) {if (preIndexOfS[s[i]] != preIndexOfT[t[i]]) {return false;}preIndexOfS[s[i]] = i + 1;preIndexOfT[t[i]] = i + 1;}return true;}
};

法二:哈希表
Java

class Solution {public boolean isIsomorphic(String s, String t) {Map<Character, Character> mapping = new HashMap<>();Set<Character> setting = new HashSet<>();for(int i = 0; i < s.length(); i++){char sc = s.charAt(i), tc = t.charAt(i);if(mapping.containsKey(sc)){if(mapping.get(sc) != tc) return false;}else if(!setting.contains(tc)){mapping.put(sc, tc);setting.add(tc);}else{return false;}}return true;}
}

C++

class Solution {
public:bool isIsomorphic(string s, string t) {unordered_map<char, char> mapping;unordered_set<char> setting;for(size_t i = 0; i < s.size(); i++){if(mapping.find(s[i]) != mapping.end()){if(mapping[s[i]] != t[i]) return false;}else if(setting.find(t[i]) == setting.end()){mapping.insert({s[i], t[i]});setting.insert(t[i]);}else{return false;}}return true;}
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为字符串s的长度。
  • 空间复杂度 O ( S ) O(S) O(S),其中 S 为字符集大小。法一:我们使用了一个长度为 256 的数组,存储每个字符出现的次数。法二:哈希表存储字符的空间取决于字符串的字符集大小,最坏情况下每个字符均不相同。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.yayakq.cn/news/141127/

相关文章:

  • 个人注册的网站可以做公司宣传用吗个人网站怎么写
  • 企业信用信息查询公示报告广州seo排名
  • 成都摄影网站建设郴州市建设网站
  • 网站被取消备案最新新闻热点事件中国
  • 彩票网站平台前端开发的发展前景
  • 网上商城建网站最简单的网站模板
  • 自助建站系统官网汽配网站建设
  • dedecms 子网站电商网站建设会计分录
  • 手机网站建设事项ps网页设计教程简单
  • 网站右侧广告杭州公司申请车牌需要什么条件
  • 门户网站用虚拟主机沈阳市建设工程信息
  • 做整装的网站网络推广的优势有哪些
  • 建设银行河北分行网站站内关键词排名优化软件
  • 成品门户网站源码免费成都私人做网站建设的公司
  • 小破站下载泾川网站城镇建设规化图
  • 服务类网站建设服务公司宿迁市宿城区二手房最新消息
  • 石家庄谁会搭建网站ue5培训机构哪家强
  • 云安区学校网站建设统计表北京东八区网站建设
  • 中国建设银行网上银行网站网站制作语言
  • 邵阳网站设计手机网站关键词排名
  • 网站开发后台注意事项老板办公室装修效果图
  • 东莞专业全网推广建站公司爱南宁app官方下载
  • 织梦 修改网站logo做图去哪个网站找素材
  • 正品率最高的购物网站正规网站制作公司是哪家
  • 国内做网站的顶尖公司增加网站关键词库
  • 汽车技术资料网站建设千野网站建设
  • 中国制药网网站开发技术网站首页适配规则
  • 修改已经有的网站怎么修改游戏开发和网站开发
  • 做网站大概多钱优化法治化营商环境
  • .net网站开发实训商家在网站做淘宝客会给佣金吗