问题描述:给定两个字符串判断它们的字符集是否相同。
例如:“aaabbcc”和“abc”的字符集是相同的,字符集都是{a,b,c}。
解题方法:这题与变形词不同在于仅仅要求字符集相同,对数量和长度没有要求。而变形词是要求重复出现的次数也要相同。可以Java提供的hashSet进行统计。hashSet可以过滤重复的元素,先将第一个字符串的元素依次添加到hashSet中。记录此时hashSet的大小,再将第二个字符串的元素依次添加进去然后。如果hashSet的大小没有变就说明第二个字符串没有出现新的元素。两个字符串的字符集是相同的。
代码如下:
import java.util.*;
public class 判断两个字符串的字符集是否相同 {
public static void main(String[] args){
String str1 = "aabbbcc";
String str2 = "abc";
System.out.println(IsSame(str1,str2));
}
private static boolean IsSame(String str1, String str2) {
HashSet hs = new HashSet();
for(int i=0; i<str1.length(); i++){
hs.add(str1.charAt(i));
}
int temp = hs.size();
for(int i=0; i<str2.length(); i++){
hs.add(str2.charAt(i));
}
if(temp == hs.size()) return true;
return false;
}
}
这题同hashMap也可以实现。hashSet和hashMap的区别如下图: