(2) 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

/**
	 * 第一种方式:
	 * 实现思路:将字符串通过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我"));
	}

原文地址:https://www.cnblogs.com/xiaozhang2014/p/5297288.html