博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode. 同构字符串
阅读量:2073 次
发布时间:2019-04-29

本文共 2421 字,大约阅读时间需要 8 分钟。

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

如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。

所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

示例 1:

输入: s = "egg", t = "add"输出: true

示例 2:

输入: s = "foo", t = "bar"输出: false

示例 3:

输入: s = "paper", t = "title"输出: true

说明:

你可以假设 s 和 t 具有相同的长度。

失败

C++1

首先想到使用hash表,分别用两个hash表存入两个字符串中不同元素的数量,然后转出到vector中,最后排序比较不同元素的数目是否分布是一样的。后来发现没考虑顺序信息,比如"egg"和"ada",最后结果都是122,但是这是错误的,应该是122和212。

class Solution {
public: bool isIsomorphic(string s, string t) {
unordered_map
hm; for (int i=0; i
hm2; for (int j=0; j
v1,v2; for ( auto& x: hm ){
v1.push_back(x.second); } for ( auto& x2: hm2 ){
v2.push_back(x2.second); } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); for(int y:v1){
cout << y; } cout << endl; for(int x:v2){
cout << x; } if(v1.size() == v2.size()) {
for(vector
::const_iterator p = v1.begin(),q = v2.begin(); p!= v1.end(); p++,q++) {
if(*p != *q) {
return false; } } return true; } return false; }};
C++2

这次是按照index索引计算的,分别计算得出每个索引位置的元素对应的出现次数,这次"abba"和"abab"都是2222了,但是这其实也是不对的,false,还是因为顺序不对。第一个是中间两位相同,第二个字符串是相隔一位相同。

我太难了。

class Solution {
public: bool isIsomorphic(string s, string t) {
unordered_map
hm; for (int i=0; i
hm3; unordered_map
hm4; for (int i=0; i
hm2; for (int j=0; j
v1,v2; for ( auto& x: hm3 ){
v1.push_back(x.second); } for ( auto& x2: hm4 ){
v2.push_back(x2.second); } for(int y:v1){
cout << y; } cout << endl; for(int x:v2){
cout << x; } if(v1.size() == v2.size()) {
for(vector
::const_iterator p = v1.begin(),q = v2.begin(); p!= v1.end(); p++,q++) { if(*p != *q) { return false; } } return true; } return false; }};

成功

C++3
class Solution {
public: bool isIsomorphic(string s, string t) {
vector
vecS(256,-1),vecT(256,-1); for(int i=0;i

差得多啊qaq

转载地址:http://zmomf.baihongyu.com/

你可能感兴趣的文章
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
面试Java程序员需具备的11个技能
查看>>
HashMap 和 HashTable 到底哪不同 ?
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>