lurenaa的博客

😂实现一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
bool isIsomorphic(string s, string t) {
unordered_map<char, int> st, tt;
for(int i = 0; i < s.size(); ++i) {
if(st.count(s[i]) == 1 || tt.count(t[i]) == 1) {
if(tt.count(t[i]) != 1 || st.count(s[i]) != 1 || tt.at(t[i]) != st.at(s[i]))
return false;
}
st.insert({s[i], i});
tt.insert({t[i], i});
}
return true;
}
};

Accepted

30/30 cases passed (40 ms)

Your runtime beats 5.2 % of cpp submissions

Your memory usage beats 5.04 % of cpp submissions (15 MB)

🤫实现二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
bool isIsomorphic(string s, string t) {
map<char, char> mp1, mp2;
for(int i = 0; i < s.size(); ++i) {
if(mp1.find(s[i]) == mp1.end()) {
mp1.insert({s[i], t[i]});
} else {
if(mp1[s[i]] != t[i])
return false;
}
if(mp2.find(t[i]) == mp2.end()) {
mp2.insert({t[i], s[i]});
} else {
if(mp2[t[i]] != s[i])
return false;
}
}
return true;
}
};

Accepted

30/30 cases passed (24 ms)

Your runtime beats 13.07 % of cpp submissions

Your memory usage beats 6.98 % of cpp submissions (9.5 MB)

🤫实现三

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
bool isIsomorphic(string s, string t) {
return transf(s) == transf(t);
}
vector<int> transf(string s) {
int count = 0;
int a[128] = {0};
vector<int> res;
for(int i = 0; i < s.size(); ++i) {
if(a[s[i]] == 0) {
a[s[i]] = ++count;
}
res.push_back(a[s[i]]);
}
return res;
}
};

Accepted

30/30 cases passed (8 ms)

Your runtime beats 90.9 % of cpp submissions

Your memory usage beats 5.06 % of cpp submissions (10.8 MB)