/**
* 功能:给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
*/
两种方法:
1、首先对字符串排序,然后比较是否相同(最优)
//首先对字符串排序,然后比较
public
static
boolean
permutation(String
str1
,String
str2
){
if
(
str1
.length()!=
str2
.length())
return
false
;
return
sort(
str1
).equals(sort(
str2
));
}
public
static
String sort(String
s
){
char
[]
array
=
s
.toCharArray();
Arrays. sort(
array
);
return
new
String(
array
);
}
2、
索引值i对应的标记指示该字符出现的频率,比较两个字符串的每个字符出现的频率和出现的个数
//索引值i对应的标记指示该字符出现的频率,比较两个字符串的每个字符出现的频率和字符出现的个数
public
static
boolean
isSame(String
str1
,String
str2
){
if
(
str1
.length()!=
str2
.length())
return
false
;
int
[]
val1
=
new
int
[256];
int
[]
val2
=
new
int
[256];
val1
= getVal(
str1
);
val2
= getVal(
str2
);
for
(
int
i
=0;
i
<256;
i
++){
if
(
val1
[
i
]!=
val2
[
i
]){
return
false
;
}
}
return
true
;
}
public
static
int
[] getVal(String
str
){
int
[]
val
=
new
int
[256];
for
(
int
i
=0;
i
<
str
.length();
i
++){
int
value
=
str
.charAt(
i
);
val
[
value
]++;
}
return
val
;
}
}