<span style="font-size:18px;">package com.String;
import java.util.Scanner;
/*
* 1.常用的方法是排序,比较是否相同,时间复杂度为O(n*logn).
* 2.申请一个大小为256的数组来记录各个字符出现的次数,并初始化为0,然后遍历第一个字符串,
* 将字符串中字符对应的ASCII码值作为数组下标,把对应数组的元素+1,然后遍历第二个字符
* 串,把数组中对应的元素值-1.如果最后数组中各个元素的值都是0,说明这两个字符串由相同的
* 字符组成;否则,由不同的字符组成。--申请了额外空间,时间复杂度为O(n).
*/
public class Test {
public static void compare(String s1,String s2){
byte[] b1=s1.getBytes();
byte[] b2=s2.getBytes();
int[] bCounts=new int[256];
for(int i=0;i<bCounts.length;i++)
bCounts[i]=0;
for(int i=0;i<b1.length;i++)
bCounts[b1[i]-'0']++;
for(int i=0;i<b2.length;i++)
bCounts[b2[i]-'0']--;
for(int i=0;i<bCounts.length;i++)
if (bCounts[i] != 0) {
System.out.println("not equal");
return;
}
System.out.println("equal");
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String s1=input.next();
String s2=input.next();
compare(s1,s2);
}
}
</span>
判断两个字符串是否由相同的字符组成
最新推荐文章于 2024-06-27 08:56:19 发布