public class SameString {
//思想二:每個字符都相應著自己的ASC碼,第一個思想的算法復雜度為O(nlogn)。一般能夠利用空間來減少時間復雜度
//能夠開辟一個大小為256的數組空間,而且將256個數組元素都置為0,然后遍歷第一個字符串把字符的ASC作為數組下標。數組元素都加1,
//然后遍歷第二個字符串將數組元素的各個值都減1,假設最后數組元素的值為0的話說明就是同樣的字符串。此算法的時間復雜度為O(n)
public static void compare(String s1,String s2){
byte[] b1=s1.getBytes();
byte[] b2=s2.getBytes();
int[] bCount=new int[256];
for(int i=0;i<256;i++){
bCount[i]=0;
}
for(int i=0;i
bCount[b1[i]-'0']++;
}
for(int i=0;i
bCount[b2[i]-'0']--;
}
for(int i=0;i<256;i++)
if(bCount[i]!=0){
System.out.println("not equal!");
return;
}
System.out.println("equal!");
}
public static void main (String args[]){
String s1="aaabbbccc";
String s2="ababacbcc";
compare(s1, s2);
String s3="aabbccdd";
String s4="abc";
compare(s3, s4);
}
}結果:equal
not equal
版權聲明:本文博客原創文章。博客,未經同意,不得轉載。