网易面试题-判断字符串s1是否为字符串s2的重排子串

判断字符串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<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值