首页 > 其他分享 >1011打卡

1011打卡

时间:2023-10-11 22:38:30浏览次数:47  
标签:right nums int 1011 length words 打卡 public

1. 串联所有单词的子串(30)

 思想: 哈希表+滑动窗口

class Solution {
    public List<Integer> findSubstring(String s, String[] words) {
   int len = words.length;
        int wordlen = words[0].length();
        HashMap<String, Integer> map = new HashMap<>();
        ArrayList<Integer> res = new ArrayList<>();
        for (String word : words) {
            map.put(word,map.getOrDefault(word,0)+1);
        }

        for (int i = 0; i <s.length()-len*wordlen+1 ; i++) {
            HashMap<String, Integer> match = new HashMap<>();
            for (int j = i; j <i+len*wordlen ; j+=wordlen) {
                String word  =  s.substring(j,j+wordlen);
                if (!map.containsKey(word))break;
                match.put(word,match.getOrDefault(word,0)+1);
            }
            if (map.equals(match)){
                res.add(i);
            }
        }
        return res;
    }
}

2. 下一个排列(31)

 

class Solution {
    public void nextPermutation(int[] nums) {
   //数字找到左边升序右边降序的分界点,从右边找比他一点的较大数
        int i = nums.length - 2;
        while (i >= 0 && nums[i] >= nums[i + 1]) {
            i--;
        }
        if (i >= 0) {
            int j = nums.length - 1;
            while (j >= 0 && nums[i] >= nums[j]) {
                j--; //找到第一个比nums[i]大的数
            }
            swap(nums, i, j);
        }
        reverse(nums, i + 1);

    }

    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }

    public void reverse(int[] nums, int start) {
        int left = start, right = nums.length - 1;
        while (left < right) {
            swap(nums, left, right);
            left++;
            right--;
        }
    }}

3. 最长有效括号(32)

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

class Solution {
    public int longestValidParentheses(String s) {
       Stack<Integer> stack = new Stack<>();
        int ans = 0;
        for (int i = 0,start = 0; i <s.length() ; i++) {
            if(s.charAt(i)=='(')
                stack.push(i);
            else {
                //是右括号
                if (!stack.isEmpty()){
                    //说明有左括号可以匹配
                    stack.pop();
                    if(stack.isEmpty()) {
                        ans = Math.max(i - start + 1, ans);
                    }else {
                        ans = Math.max(i-stack.peek(),ans);
                    }
                }else {
                    start = i+1;
                }
            }
        }
        return ans;
    }
}

 

标签:right,nums,int,1011,length,words,打卡,public
From: https://www.cnblogs.com/forever-fate/p/17758372.html

相关文章

  • 每日总结20231011
    代码时间(包括上课)3h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周三,今天上午上的是软件构造,软件构造讲的是程序规范化。2、今天下午我们进行了献血的演讲的观看,明白了献血的意义。3、今天还打算看看软件设计师相关的题目,我要过,我要通过,我要高分通过!......
  • 20231011
    //eclectic,extreme,halfway,medium,request,tradeoff,giveground,meanmethod,middleway,midwaypoint,strikeahappymediumeclectic-折中的,多元的Eclecticreferstoastyleorapproachthatcombineselementsorideasfromvarioussourcesorstyles.......
  • 大二打卡(10.11)
    今天做了什么:英语课,今天对于老师上课的小发问都能回答上来,不知道是不是因为坐的稍微靠后心情没那么紧张,脑子活了,听力最后一部分听的不行,比上回好了一点,但有限弄了半天建民的测试,我现在已经不知道自己搞错哪一步了,tomcat重装,connector也下了重装,web项目建立的也没问题,代码也没保......
  • 231011校内赛
    T1树上的数题解比上一次好一些的第一题不过我还是没做出来一眼树形\(dp\)不过状态设计和转移不是很好列容易想到对于子树枚举,记录\(f_{i,j}\)表示\(i\)的子树空出了\(j\)个点时的方案数对于每一个节点的初始状态都是\(f_{i,0}=n-dep_i\\\f_{i,1}=1\)为......
  • 20231011
    20231011NOIP#18总结时间安排7:50~8:30看题,\(A,C\)一眼切,\(B\)不会一点,\(D\)应该能爆搜不知道拿多少分。8:30~8:40写\(A\)的正解。8:40~9:40写\(C\)的正解。9:40~10:20写\(D\)的爆搜再加点剪枝,打点数据特判希望骗分。10:20~11:50写了\(B\)的爆搜,然后打特殊......
  • 《流畅的Python》 读书笔记 第二章数据结构(2) 231011
    2.5对序列使用+和*通常+号两侧的序列由相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被修改,Python会新建一个包含同样类型数据的序列来作为拼接的结果+和*都遵循这个规律,不修改原有的操作对象,而是构建一个全新的序列l1=[1,2,3]l2=[4,5,6]print(id(l......
  • 大二打卡(10.10)
    今天做了什么:数据结构,今天是稍微复习二叉树,然后学了二叉树的代码实现,以及二叉树的遍历,马原,矛盾统一,乱七八糟,感觉好多概念都很相似,但都有很奇怪的点是不同的,哲学真复杂,白话文小说,今天知道了西游记的发展变化和开篇西行起因,有意思,还跟朱棣有关系今天遇到了什么问题:建民老师的测试......
  • 大二打卡(10.09)
    今天做了什么:上午工程训练今天是铁道扫盲班,有一说一,咱学校铁道方面的装备是真舍得花钱,一比一的复兴号操作平台啊,有种类似与钢铁侠操作模拟降临身边的科幻感,下午建民老师的课,假期纯玩,没学一点,果然测试老大难遇到什么问题:建民老师的测试明天怎么做:对着自己的几份代码调试,看看是......
  • 926打卡
    1.删除有序数组中的重复项(26)给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数思想:双指针classSolution{publicint......
  • 20231010打卡
    上午,我学习了顺序存储二叉树数组与链式存储二叉树链表。这是数据结构中非常重要的内容,对于软件工程师来说尤为重要。我仔细学习了二叉树的基本概念、如何使用数组和链表进行存储,以及它们之间的优缺点。我进行了一些实践操作,加深了对二叉树存储方式的理解,并做了一些小练习来巩固所......