java 删除多余的括号
对于某个字符串,其中仅仅包含(,)和字母,删除最少的多余括号来使其其匹配。<br/> BFS:去掉每一个(或),看看剩下的字符串是否是匹配的,递归调用。涉及到DFS或BFS的都是暴力搜索。
java 添加括号分拆运算--medium
若输入是数字和运算符的时候,比如“1 + 1”这种情况,那么加不加括号也没有任何影响,因为只有一个计算,结果一定是2.再复杂一点的话,比如题目中的例子1,输入是“2-1-1”时,就有两种情况了,(2-1)-1和2-(1-1),由于括号的不同,得到的结果也不同,但如果我们把括号里的东西当作一个黑箱的话,那么其就变为()-1和2-(),其最终的结果跟括号内可能得到的值是息息相关的,那么再一般一点,实际上就可以变成()? ()这种形式,两个括号内分别是各自的表达式,最终会分别计算得到两个整型数组,中间的问号表示运算符,可以是加,减,或乘。那么问题就变成了从两个数组中任意选两个数字进行运算,瞬间变成我们会做的题目了有木有?而这种左右两个括号代表的黑盒子就交给递归去计算,像这种分成左右两坨的模式就是大名鼎鼎的分治法Divide and Conquer了,是必须要掌握的一个神器。
java 有效的括号匹配问题
给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。<br/> Stack栈
java Palindrome Partition II--分割回文字符串二
给定一个字符串,分割成多个子字符串,使得每个子字符串都是回文字符串,求最少分割多少次。<br/>一看就是动态规划,dp [i]表示原字符串0 〜我之间要分割成回归子串最少的分割次数,此种定义dp的方法导致类似于最长递增子序列的方法。更新dp [i],前面说过了其其表示子串[0,i ]范围内的最小分割数。那么这个区间的每个位置都可以尝试分割开来,所以就用一个变量j来从0遍历到i,这样就可以把区间[0,i]分为两部分, [0,j-1]和[j,i],那么假设已经知道区间[0,j-1]的最小分割数dp [j-1],因为我们是从前往后更新的,而j小于等于我,所以dp [j-1]肯定在dp [i]之前就已经算出来了。这样我们就只需要判断区间[j,i]内的子串是否为回文串了,是的话,dp [ i]就可以用1 + dp [j-1]来更新了。判断子串的方法用的是之前那道Palindromic Substrings一样的方法,使用一二维的dp数组p,其中p [i] [j]表示区间[i,j]内的子串是否为回文串,其状态转移方程为p [i] [j] =(s [i] == s [j])&& p [i + 1] [j-1],其中p [i] [j] =真如果[i,j]为回文。这样的话,这道题实际相当于同时用了两个DP的方法。
java FileRemoveLine
https://stackoverflow.com/questions/1377279/find-a-line-in-a-file-and-remove-it
java FIleReadLines
文件读取线
java StreamLastElement
<br/>从列表中获取最后一个元素<br/> <br/> https://www.baeldung.com/java-stream-last-element <br/> <br/>
java FileClear
java FileCheckIfempty
检查文件是否为空