判断字符串s1是否为字符串s2的重排子串,如s1=“aabcd”,s2=“sdabcda”,由于s2的子串“abcda”重新排序后可以为aabcd,因此s1是s2的重排子串;如s1=“aabcd”,s2=sdabcdsa“”,s2中任意子串重排后均不能和s1一样,因此s1不是s2的重排子串。
题意已经明白,下面就是具体的实现,由于找的是子串之间的关系,因此首先想到的是通过java的subString方法对s2进行截取,截取后的子串之间再做比较,但是子串之间由于顺序不一致,因此不能通过遍历的方法来进行比较,但是子串之间判断是否为重排子串的标准为重排后是否相等,实际为子串包含的字符以及次数是否完全一致,因此接下啦就是看子串之间的字符以及出现次数是否相等了,数据结构中map比较适合用做这种,用字符作为key,出现次数作为value,如果两个map相等,则可以认为两个字符串的字符以及出现次数一样,下面呈上代码:
public static boolean containString(String s1,String s2){
int len=s1.length();
Map<String,Integer> map1=new HashMap<String, Integer>();
Map<String,Integer<