问题描述:由相同的字符组成是指组成两个字符串的字母以及各个字母的个数是一样的,只是排列顺序不同,例如“aaaabbc”与“abcbaaa”就由相同的字符组成。
方法一:排序法。即先将两个字符串中的字符进行排序,比较两个排序后的字符串是否相等。
方法二:空间换时间。就本题而言,假设字符串只使用ASCII字符,由于ASSCII字符共有256个(对应得编码为0-255),在实现时可以通过申请大小为266得数组来记录各个字符出现得个数,并初始化为0,然后遍历第一个字符串,将字符串中字符对于得ASCII码值作为数组下标,把对应数组得元素加1,然后遍历第二个字符串,把数组中对应的元素值-1。
方法一代码如下:
package com.haobi;
import java.util.Arrays;
/*
* 如何判断两个字符串是否由相同的字符组成
*/
public class Test2 {
public void compare(String s1, String s2) {
byte[] b1 = s1.getBytes();
byte[] b2 = s2.getBytes();
Arrays.sort(b1);
Arrays.sort(b2);
s1 = new String(b1);
s2 = new String(b2);
if(s1.equals(s2)) {
System.out.println("相等!");
}else {
System.out.println("不相等!");
}
}
public static void main(String[] args) {
String s1 = "aaaabbc";