Redian新闻
>
【虎年奔宝宝】小圆辞旧迎新给大家拜年啦!
avatar
【虎年奔宝宝】小圆辞旧迎新给大家拜年啦!# NextGeneration - 我爱宝宝
g*r
1
given "foo", "app"; returns true we can map f -> a and o->p
given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'
记得lolhaha大牛说过一个hashmap的解法,具体怎么做呢?
avatar
y*9
2
倪萍大姑妈深情地播报春晚经典贺卡:各位港澳同胞,海外侨胞,海外游子留学生朋友们,每逢佳节倍思亲,值此新春佳节,我们收到了来自大洋彼岸出生仅4个月的圆圆小朋友发来的电子贺卡,今年是圆圆生命中第一次过春节,虽然远在异国他乡,但是圆圆努力地向爸爸妈妈学习祖国传统文化,和爸爸妈妈一起欢度虎年新春,看。。。。小圆给大家拜年来啦!
先作揖拜一拜爸爸妈妈准爸爸准妈妈叔叔阿姨!恭贺新春!
再拜一拜哥哥姐姐弟弟妹妹 (妈妈!我已经换好衣服准备跳舞了)
好吧,接着让我来为大家跳个新春泼水舞
最后,祝买买提宝宝版的爸爸妈妈准爸爸准妈妈叔叔阿姨哥哥姐姐弟弟妹妹新春愉快!万事如意!团团圆圆!
avatar
l*a
3
对于第一个例子
你把f>a a->f都存进去就可以了吧

【在 g********r 的大作中提到】
: given "foo", "app"; returns true we can map f -> a and o->p
: given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
: given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'
: 记得lolhaha大牛说过一个hashmap的解法,具体怎么做呢?

avatar
g*r
4
"ab", "ca"怎么做呢?
比如第一个char结束后, mp[a] = c, mp[c]=a
然后到了第二个char, 不知道怎么判断了

【在 l*****a 的大作中提到】
: 对于第一个例子
: 你把f>a a->f都存进去就可以了吧

avatar
l*a
5
这个自己想得出来吧
第二个char期待 map[a]=b and map[b]=a
跟现有map conflict了吧

【在 g********r 的大作中提到】
: "ab", "ca"怎么做呢?
: 比如第一个char结束后, mp[a] = c, mp[c]=a
: 然后到了第二个char, 不知道怎么判断了

avatar
g*r
6
不是吧
"ab" "ca"是同构的啊

【在 l*****a 的大作中提到】
: 这个自己想得出来吧
: 第二个char期待 map[a]=b and map[b]=a
: 跟现有map conflict了吧

avatar
p*2
7
def isomorphicString(s1:String, s2:String) = {
val f = (s1:String, s2:String) => s1.zip(s2).groupBy(_._1).map(_._2.
toSet).forall(_.size==1)
f(s1,s2) && f(s2,s1)
}
avatar
v*a
8
public static boolean isIsomorphic(String inputString1, String inputString2)
{
int length1 = inputString1.length();
int length2 = inputString2.length();
if (length1 != length2) {
return false;
}
if (length1 == 1) {
return true;
}
Map map = new HashMap();
for (int i = 0; i < length1; i++) {
if (!map.containsKey(inputString1.charAt(i)) && !map.
containsValue(inputString2.charAt(i))) {
map.put(inputString1.charAt(i), inputString2.charAt(i));
}
if (map.get(inputString1.charAt(i)) == null) {
return false;
}
if (!map.get(inputString1.charAt(i)).equals(inputString2.charAt(
i))) {
return false;
}
}
return true;
}
avatar
g*r
9
多谢大牛!可惜俺对java的contains之类的用法不太了解,大牛能讲一下"ab" "ca"在
这段code里面怎么运行的吗?多谢了!

inputString2)

【在 v****a 的大作中提到】
: public static boolean isIsomorphic(String inputString1, String inputString2)
: {
: int length1 = inputString1.length();
: int length2 = inputString2.length();
: if (length1 != length2) {
: return false;
: }
: if (length1 == 1) {
: return true;
: }

avatar
s*i
10
很不幸的是containsValue是O(n),
所以最终的算法复杂度是O(n^2)

inputString2)

【在 v****a 的大作中提到】
: public static boolean isIsomorphic(String inputString1, String inputString2)
: {
: int length1 = inputString1.length();
: int length2 = inputString2.length();
: if (length1 != length2) {
: return false;
: }
: if (length1 == 1) {
: return true;
: }

avatar
r*7
11
怎么定义是“单Hashmap”?
一个Hashmap用完一次清空再重新用算么?

【在 g********r 的大作中提到】
: given "foo", "app"; returns true we can map f -> a and o->p
: given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
: given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'
: 记得lolhaha大牛说过一个hashmap的解法,具体怎么做呢?

avatar
l*a
12
这code真的work吗?

inputString2)

【在 v****a 的大作中提到】
: public static boolean isIsomorphic(String inputString1, String inputString2)
: {
: int length1 = inputString1.length();
: int length2 = inputString2.length();
: if (length1 != length2) {
: return false;
: }
: if (length1 == 1) {
: return true;
: }

avatar
l*a
13
try bcb ood

【在 l*****a 的大作中提到】
: 这code真的work吗?
:
: inputString2)

avatar
v*a
14
这个是false吧?
我也发现containsValue 不是O(1)了。。不知道怎么写是单HashMap的O(N)

【在 l*******a 的大作中提到】
: try bcb ood
avatar
w*e
15
char [] a="abcd".toCharArray();
char [] b="pqap".toCharArray();
int i=0;
boolean TF=true;
HashMap h1=new HashMap();
HashMap h2=new HashMap();
for (i=0;i< a.length; i ++){
if (
( h1.containsKey(a[i]) && (h1.get(a[i]).compareTo(b[i])!=0) ) ||
( h2.containsKey(b[i]) && (h2.get(b[i]).compareTo(a[i])!=0) )
){
TF=false;
}else{
h1.put(a[i],b[i]);
h2.put(b[i],a[i]);
}

}
System.out.println(TF);
avatar
i*e
16
一个hashmap两个hashmap的解法区别在哪里?空间复杂度吗?一个是n,另一个是2n,不
过都是O(n).
如果非要一个hashmap,那就在每个字符的前面加个特殊符号来表示左映射或者右映射
,比如:
b --> o
{">b" : "o",
"在判断
bcb --> ood
就会第二个字母发现问题,因为 "{">b" : "o",
"">c": "o"}
avatar
l*a
17
你想多了
直接b->a ,a->b同时放map就好

【在 i*****e 的大作中提到】
: 一个hashmap两个hashmap的解法区别在哪里?空间复杂度吗?一个是n,另一个是2n,不
: 过都是O(n).
: 如果非要一个hashmap,那就在每个字符的前面加个特殊符号来表示左映射或者右映射
: ,比如:
: b --> o
: {">b" : "o",
: ": 在判断
: bcb --> ood
: 就会第二个字母发现问题,因为 "
avatar
i*e
18
确定这样行吗?
比如 ba ac

【在 l*****a 的大作中提到】
: 你想多了
: 直接b->a ,a->b同时放map就好

avatar
w*e
19

原來不行呀,害我改了....

【在 i*****e 的大作中提到】
: 确定这样行吗?
: 比如 ba ac

avatar
l*a
20
题目第三个case是错误的
since u already have b map to a(which means a map to b as well),
how u can map a to c?

【在 i*****e 的大作中提到】
: 确定这样行吗?
: 比如 ba ac

avatar
w*e
21
So, this question is not clear.
if this is a mapping between 2 languages or for Cryptology, then the mapping
is directional, and the case 大饼 mentioned is valid.
avatar
l*a
22
then why below is false?
given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'

mapping

【在 w*****e 的大作中提到】
: So, this question is not clear.
: if this is a mapping between 2 languages or for Cryptology, then the mapping
: is directional, and the case 大饼 mentioned is valid.

avatar
s*l
23
b map to a 不一定 means a map to b as well把~

【在 l*****a 的大作中提到】
: 题目第三个case是错误的
: since u already have b map to a(which means a map to b as well),
: how u can map a to c?

avatar
g*r
24
是啊,我也觉得“同构”是说结构相同,比如abc和bca是同构的

【在 s********l 的大作中提到】
: b map to a 不一定 means a map to b as well把~
avatar
l*a
25
那你仔细学学wiki吧。

【在 g********r 的大作中提到】
: 是啊,我也觉得“同构”是说结构相同,比如abc和bca是同构的
avatar
s*l
26
我search了一圈 都给了那个例子 难道都错了?
你查的谁家wiki啊 我怎么没看到?

【在 l*****a 的大作中提到】
: 那你仔细学学wiki吧。
avatar
l*a
27
you should confirm with interviewer
按照你的理论,能否解释一下为什么下面那个return true
while the first return false
given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'

【在 s********l 的大作中提到】
: 我search了一圈 都给了那个例子 难道都错了?
: 你查的谁家wiki啊 我怎么没看到?

avatar
s*l
28
第一个 a->o r ->o 所以false
第二个 a->b c->a true (if a->c 那就是false)
我记得在哪里见过着这样的错位编码 是单向 不是双向的~

【在 l*****a 的大作中提到】
: you should confirm with interviewer
: 按照你的理论,能否解释一下为什么下面那个return true
: while the first return false
: given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
: given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'

avatar
l*a
29
需求请问面试官
我看到的一个领英面经是这么写的:
1. Return if two strings are isomorphic. (character 1-1 match)
“zoo” -> “fee” ( z->f, o->e) true
“zoo” -> “dui” ( z->d, o->u, o-> ) false
“dui” -> “zoo” (d->z, u->o, i-> ) false
1. Return if two strings are isomorphic. (character 1-1 match)

【在 s********l 的大作中提到】
: 第一个 a->o r ->o 所以false
: 第二个 a->b c->a true (if a->c 那就是false)
: 我记得在哪里见过着这样的错位编码 是单向 不是双向的~

avatar
u*x
30
How about this?
return singleDirection(str1, str2) && singleDirection(str2, str1);
singleDirection returns false if the same char in the 1st arg maps to two
different chars in the 2nd arg, which is easy to code.

【在 g********r 的大作中提到】
: given "foo", "app"; returns true we can map f -> a and o->p
: given "bar", "foo"; returns false we can't map both 'a' and 'r' to 'o'
: given "ab", "ca"; returns true we can map 'a' -> 'b' and 'c' -> 'a'
: 记得lolhaha大牛说过一个hashmap的解法,具体怎么做呢?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。