首页 > 其他分享 >力扣中567 字符串的排列

力扣中567 字符串的排列

时间:2023-03-02 11:11:06浏览次数:34  
标签:String int s2 s1 567 力扣 checkInclusion 字符串 HashMap

自己写的没写对 但是大体有了滑动窗口的思路 也不想改了 感觉用人家的方法更好 这个放在字典里面不好

public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s1="as";
        String s2="asdfgh";
        System.out.print(Leetcode567.checkInclusion(s1, s2));

    }
    //自己写的是放入一个键值对的map里面 键就是字符char 值就是包含个数 
    //因为子串的排列相同就是所含个数相同
    public static boolean checkInclusion(String s1, String s2) {
        Map<Character,Integer> map =new HashMap<Character,Integer>();
        Map<Character,Integer> map1 =new HashMap<Character,Integer>();
        int len=s1.length();;
        for(int i=0;i<len;i++){
            char c = s1.charAt(i);
            if(map.containsKey(c)) {
                map.replace(c, map.get(c), map.get(c)+1);
            }
            else {
                map.put(c,1);
            }        
        }
        int right=0;
        for(int i=0;i<s2.length();i++) {
            for(int j=0;j<s2.length();j++) {
                char c = s2.charAt(j);
                while(right-i<len-1) {
                    if(map1.containsKey(c)) {
                        map1.replace(c, map.get(c), map.get(c)+1);
                    }
                    else {
                        map1.put(c,1);
                    }
                    right=right+1;
                }
                if(map1.equals(map)) {
                    return true;
                }
                else {
                    char ch = s2.charAt(i);
                    if(map1.get(ch)!= 1) {//这块bug 因为不可以和一做比较 因为没有时返回空
                        map1.replace(ch, map.get(ch)-1);
                        
                    }
                    else {
                        map1.remove(ch);
                        if(map1.containsKey(c)) {
                            map1.replace(c, map.get(c), map.get(c)+1);
                        }
                        else {
                            map1.put(c,1);
                        }
                        right=right+1;
                    }
                }
//                    map1.replace(s2.charAt(i), map.get(c), map.get(c)+1);            
            }
            
        }
        return false;
    }

}

 

标签:String,int,s2,s1,567,力扣,checkInclusion,字符串,HashMap
From: https://www.cnblogs.com/ayuanjiejie/p/17170749.html

相关文章

  • 力扣---面试题 05.02. 二进制数转字符串
     二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。示例1:输......
  • python 字符串 格式化输出 槽格式 小数的位数与符号控制
    """槽的格式限定冒号:左边填序号或名称,右边填写格式"""#定义一个数num=3.1465926#保留两位小数,并且四舍五入res="{:.2f}".format(num)print(res)#有符号的数字res2=......
  • python 字符串 格式化输出 槽格式 左中右对齐的内容
    """槽的格式限定冒号:左边填序号或名称,右边填写格式"""#右对齐的字符串,宽度为20s1="{:>20}".format("hello")print(s1)#右对齐,宽20,!填充s2="{:!>20}".format("python")p......
  • python 字符串 格式化输出 位置槽 无序号的槽
    """需要格式化输出内容时可以先定义好格式使用槽{}先进行占位然后再往槽中填入数据"""print("槽的使用演练:无编号位置槽")print("首先定义一个格式")fmt="大家好,我叫{},......
  • JavaScript 字符串的相关方法
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //创建一个字符串 varstr="HelloAtguigu"; ......
  • Java基础知识点(字符串----StrIng)
    一:在开发中的应用场景1.跟正确的用户名和密码相比较2.对敏感词进行替换..............&String,StringBuilder,StringJoiner,StringBuffer,Pattern,Matcher......可以掌握字......
  • 比较含退格的字符串---双指针
    比较含退格的字符串给定s和t两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回true。#代表退格字符。注意:如果对空文本输入退格字符,文本继续为空......
  • 1405. 最长快乐字符串 (Medium)
    问题描述1405.最长快乐字符串(Medium)如果字符串中不含有任何'aaa','bbb'或'ccc'这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数a,b,c......
  • P8631 [蓝桥杯 2015 国 AC] 切开字符串 题解
    P8631[蓝桥杯2015国AC]切开字符串题解前言看到这题没有人写题解,就打算写一篇。这也是蒟蒻的第一篇题解。前置知识\(manacher\),\(SA\)。如果不会可以转至mana......
  • 力扣---42. 接雨水
    给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例1:输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,......