-
Notifications
You must be signed in to change notification settings - Fork 1
/
java_1_2_2.java
47 lines (43 loc) · 1.44 KB
/
java_1_2_2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package chapter1;
import java.util.HashMap;
/**
* 变位词(兄弟字符串)
* <p>
* 如果两个字符串的字符一样,出现的次数也一样,只是出现的顺序不一样,则认为这两个字符串是兄弟字符串。
* 现提供一个字符串,如何在字典中迅速找到他的兄弟字符串。
*/
public class java_1_2_2 {
public static void main(String[] argv) {
String str1 = "ABCA";
String str2 = "BAAC";
System.out.println(isBrotherStr(str1, str2));
}
//这里我只写了如何判断两个字符串是否是兄弟字符串
public static boolean isBrotherStr(String str1, String str2) {
if (str1.length() != str2.length()) {
return false;
}
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < str1.length(); i++) {
String s = String.valueOf(str1.charAt(i));
if (map.containsKey(s)) {
int value = map.get(s);
map.put(s, value + 1);
} else {
map.put(s, 1);
}
}
for (int i = 0; i < str2.length(); i++) {
String s = String.valueOf(str2.charAt(i));
if (!map.containsKey(s)) {
return false;
}
int value = map.get(s);
if (value == 0) {
return false;
}
map.put(s, value - 1);
}
return true;
}
}