经典算法之Isomorphic Strings
来源:互联网 发布:mac 配置ant 编辑:程序博客网 时间:2024/04/19 12:29
问题描述:
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg"
, "add"
, return true.
Given "foo"
, "bar"
, return false.
Given "paper"
, "title"
, return true.
Note:
You may assume both s and t have the same length.
class Solution {
public:
bool isIsomorphic(string s, string t) {
if(s.length() != t.length()) {
return false;
}
int *a=new int(s.length);
for( int i = 0; i < s.length(); i++) {
for( int j = 0; j<t.length(); j++ ) {
if( s[i] == s[j] && (t[i]-s[i]) != (t[j]-s[j]) ) {
return false;
}
}
}
return true;
}
};
上述方法超时。
改进:
class Solution {
public:
void arrset(int *a, int val, int length) {
for(int i=0; i<length; ++i) {
*(a+i)=val;
}
}
bool isIsomorphic(string s, string t) {
if(s.length() != t.length()) {
return false;
}
int *a=new int[255];
int *b=new int[255];
int *sub=new int[255];
arrset(a,0,255);
arrset(b,0,255);
arrset(sub,-1000,255);
for( int i = 0; i < s.length(); i++) {
int charA=s[i];
int charB=t[i];
if(a[charA] == 0 && b[charB] == 0) {
a[charA] = 1;
b[charB] = 1;
sub[charA] = s[i] - t[i];
//the case when s is "ab", t is "aa"
}
else {
if(s[i]-t[i] != sub[charA]){
return false;
}
}
}
return true;
}
};
改进by http://blog.csdn.net/brucehb/article/details/45378983
class Solution {
public:
bool isIsomorphic(string s, string t) {
int sTotTable[256];
int tTosTable[256];
int size = s.length();
for (int i = 0; i < 256; i++)
{
sTotTable[i] = 300;
tTosTable[i] = 300;
}
for (int i = 0; i < size; i++)
{
if (sTotTable[s[i]] == 300)
{
if (tTosTable[t[i]] == 300)
{
sTotTable[s[i]] = t[i];
tTosTable[t[i]] = s[i];
}
else
{
return false;
}
- 经典算法之Isomorphic Strings
- leetCode 之 Isomorphic Strings
- LeetCode之Isomorphic Strings
- leetcode之Isomorphic Strings
- LeetCode 之 Isomorphic Strings
- leetcode之Isomorphic Strings
- leetcode之Isomorphic Strings
- leetcode题解之Isomorphic Strings
- 【LeetCode-面试算法经典-Java实现】【205-Isomorphic Strings(同构字符串)】
- 15算法课程 205. Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- 反编译APP嵌入广告赚钱经验分享
- Ruby簡明教程之方法(Method)介紹
- Ruby中的迭代器詳解
- CSS打造的边框折角效果
- 数组与指针
- 经典算法之Isomorphic Strings
- socket中send函数和recv函数的理解
- 淺談Rails 4 中Strong Parameters機制
- 巧克力爱好者匿名用例图 小组成员:张猛 李轩 张雨 谷雨 韩蕊
- 常见面试之机器学习算法思想简单梳理(进阶版)
- 邮票分你一半
- 第六届蓝桥杯java试题-九数组分数
- 在hadoop2.4集群环境下安装spark
- protocol、category和继承的区别