题目:
只要出现的字符集相同就相等,不在乎数量。
思路:
借助辅助数组,先扫描第一个字符串,将出现的字符转换为辅助数组的下标并标记为1
package 字符串问题;
import java.util.HashMap;
import java.util.Map;
//前提时字符串的组成数组时ASCII码
public class case06_两个串的字符集是否相等 {
public static void main(String[] args) {
boolean res=check("aasdf","azxcn");
System.out.println(res);
boolean a=check2("abc","aabbbbcccc");
System.out.println(a);
}
private static boolean check(String s1, String s2) {
int[] help=new int[256];
//扫描s1
for(int i=0;i<s1.length();i++){
char c=s1.charAt(i);
help[c]=1;
}
//扫描s2
for(int i=0;i<s2.length();i++){
char c=s2.charAt(i);
if(help[c]!=1){
return false;
}
}
return true;
}
//另一种方法哈希映射
private static boolean check2(String s1, String s2) {
Map<Character,Integer> map=new HashMap<>();
//int[] help=new int[256];
//扫描s1
for(int i=0;i<s1.length();i++){
char c=s1.charAt(i);
if(map.get(c)==null){
map.put(c,1);
}
}
//扫描s2
for(int i=0;i<s2.length();i++){
char c=s2.charAt(i);
if(map.get(c)==null){
return false;
}
}
return true;
}
}