/**
* 第一种方式:
* 实现思路:将字符串通过getBytes方法转换为byte数组,或者通过toCharArray()转换为char数组
* 然后先调用Arrays的sort方法进行排序,再调用Arrays的equels方法判断是否相等;
*
* @param str1
* @param str2
* @return
*/
public static boolean equels(String str1, String str2) {
byte[] sa1 = str1.getBytes();
byte[] sa2 = str2.getBytes();
Arrays.sort(sa1);
Arrays.sort(sa2);
return Arrays.equals(sa1, sa2);
} /**
* 第二种方式:
* 实现思路:将其中一个字符串放到一个StringBuffer中,然后遍历另一个String;
* 判断另一个String的每个字符在StringBuffer中是否存在,如果有的话,删除StringBuffer中对应的第一个字符;
* 遍历结束后,查看StringBuffer的长度是否为0;
*
* @param str1
* @param str2
* @return
*/
public static boolean stringSame(String str1, String str2) {
// 先判断长度
if (str1.length() != str2.length()) {
return false;
} // 把str2放到一个StringBuffer,
StringBuffer str2Buffer = new StringBuffer();
str2Buffer.append(str2); // 循环字符串1的字符,查看字符串2是否有相同字符,有的话删除
for (int i = 0; i < str1.length(); i++) {
char temp = str1.charAt(i);
int index = str2Buffer.toString().indexOf(temp);
if (index != -1) {
str2Buffer.deleteCharAt(index);
} else {
return false;
}
} // 删除结束,确认长度为0则相等
if (str2Buffer.toString().length() == 0) {
return true;
} return false;
} public static void main(String[] args) {
System.out.println(equels("aa23b235", "23ab235a"));
System.out.println(stringSame("aa23b2我35", "23ab235a我"));
}