算法题目
1.题目不难,难得地方在于对于这一反转得使用技巧
关于Set的方法的使用,其中Set判断数据是否相同是根据
package two24; import java.util.HashSet; import java.util.Set; class Solution3 { public int lengthOfLongestSubstring(String s) { // 先设置int数组得长度,每一个字符出现一次,在相应的ascll码上加1 // 最后记数的时候只需要判断有多少个不是0就行了,但是有一个要求就是必须是连续的,那就有一点难度了 // 那么咱们每次遇到重复的时候就要回到原来的位置,并且在下标上面加1,然后重新去记数。直到 // 后面的数小于max(最长的子序列) // 那么就不是加一了,而是记录该位置的下标,每一次运行都需要将数组清0 // 上面是之前的想法,但是同样咱们也可以使用Set方法来完成 // Set里面的所谓的重复的要求是地址与里面的数据完全相同 Set<Character> arr = new HashSet<Character>(); // 那咱们把String转换成int类型的数据是不是就行了 int i,max = 0,MAX = 0,start = 0; // 这样就可以了??Set接收char类型的数据是Character char[] arry = s.toCharArray(); for(i = 0; i < s.length(); i++) { if(arr.add(arry[i])) { if(max==0){ start = i; } max++; }else{ max=0; i = start; arr.clear(); } if(max > MAX) { MAX = max; } } return MAX; } }
超过16%,采用set来做的,
1.首先将String类型的数据转换成char的数据(因为set判断一个数据是否为重复的需要两方面全相等才算【具体我也讲不清】)
2.将char里面的数据传进去,并且记录第一次出现的位置
3.当出现重复要将原来arr里面的数据全部清除,并且从下一个start开始
花的时间比较长,但是无伤大雅
class Solution { public int lengthOfLongestSubstring(String s) { int[] num = new int[128]; for (int i = 0; i < 128; i++) { num[i] = -1; } // 获取s的长度 int m=s.length(); // start代表起始的位置,res代表长度 int start = 0; int res = 0; for (int i = 0; i < s.length();i++) { int index = s.charAt(i); start = Math.max(start,num[index]+1); res = Math.max(res,i-start+1); num[index]= i; } return res; } }
别个的神奇算法
package two24; public class Solution20 { public boolean isValid(String s) { // 首先最简单的方法就是简单的判断,判断下一个数据与原先的数据的比较 // 尝试更简单的方法 // 终究还是晚了一步,唉被别个先想到了 int length = s.length() / 2; for (int i = 0; i < length; i++) { s = s.replace("()", "").replace("{}", "").replace("[]", ""); } return s.length() == 0; } }
这个和我思路一样,但是我的还是存在些许错误,主要还是执行了一下就没了
class Solution { public boolean isValid(String s) { // 首先最简单的方法就是简单的判断,判断下一个数据与原先的数据的比较 // 尝试更简单的方法 s.replace("[]",null); s.replace("{}",null); s.replace("()",null); if(s!=null) { return false; } return true; } }
不晓得啥原因,回头看看
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决