* 1.排序算法:将两个字符串转化为数组,并进行排序,将排序后的数组转化为字符串,
* 并进行比较,得出结果
* 2.空间换时间的方法:
* (1)额外增加一个count数组,根据ASCII 数组大小为:256
* 用来记录每个字符的个数
* (2)将两个字符串转化为数组
* (3)遍历第一个数组,对第一个数组进行字符数统计,count[a[i]]++
* (4)遍历第二个数组,对统计后的count数组,进行count[b[i]]--
* (5)经过上述操作,如果count数组值全部为0,那么两个字符串相等, 否则不等!
package datastruct.usearray;
import java.util.Arrays;
public class JudgeSameString {
//排序法
private static void judgeMethod1(String a_string,String b_string) {
byte[] a=a_string.getBytes();
byte[] b=b_string.getBytes();
Arrays.sort(a);
Arrays.sort(b);
String aString=new String(a);
String bString=new String(b);
if (a_string.equals(bString)) {
System.out.println("两个字符串相同!");
}else {
System.out.println("两个字符串不同!");
}
}
//时间换空间
private static void judgeMethod2(String a_string,String b_string) {
byte[] a=a_string.getBytes();
byte[] b=b_string.getBytes();
int [] count=new int[256];
//初始化count
for (int i = 0; i < count.length; i++) {
count[i]=0;
}
//进行字符个数统计
for (int i = 0; i < a.length; i++) {
count[a[i]-'0']++;
}
//消除字符个数
for (int i = 0; i < b.length; i++) {
count[b[i]-'0']--;
}
for (int i = 0; i < count.length; i++) {
if (count[i]!=0) {
System.out.println("两个字符串不同!");
return;
}
}
System.out.println("两个字符串相同!");
}
public static void main(String[] args) {
String a_string="aaabbc";
String b_string="abcbaaa";
judgeMethod1(a_string, b_string);
judgeMethod2(a_string, b_string);
}
}