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

博客探讨如何判断字符串s1是否为字符串s2的重排子串,通过分析子串间的字符及出现次数,利用Map进行比较。提供了一个使用Java编程解决此问题的思路和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断字符串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<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值