leetcode字符串系列
Posted hui灰灰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode字符串系列相关的知识,希望对你有一定的参考价值。
3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"
,所以其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke"
,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"
是一个子序列,不是子串。
public int lengthOfLongestSubstring(String s) { if(s==null||s.length()==0) return 0; if(s.length()==1) return 1; Queue<Character>queue=new LinkedList<Character>(); Set<Character>set=new HashSet<Character>(); int maxLen=0; int i=0; int count=0; while(i<s.length()){ if(!set.contains(s.charAt(i))){ set.add(s.charAt(i)); queue.offer(s.charAt(i)); count++; i++; }else{ maxLen=Math.max(maxLen,count); while(set.contains(s.charAt(i))){ set.remove(queue.poll()); //System.out.println(set); count--; } set.add(s.charAt(i)); queue.offer(s.charAt(i)); count++; i++; //set.remove(s.charAt(i)); } // System.out.println(count); } maxLen=Math.max(maxLen,count); return maxLen; } }
43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
说明:
num1
和num2
的长度小于110。num1
和num2
只包含数字0-9
。num1
和num2
均不以零开头,除非是数字 0 本身。- 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
public String multiply(String num1, String num2) { if(num1.equals("0")||num2.equals("0")) return "0"; int number1[]=new int[110]; int []number2=new int[110]; int result[]=new int[200]; for(int i=num1.length()-1;i>=0;i--){ number1[num1.length()-1-i]=num1.charAt(i)-‘0‘; } for(int i=num2.length()-1;i>=0;i--) number2[num2.length()-1-i]=num2.charAt(i)-‘0‘; int car=0; int len=0; for(int i=0;i<num1.length();i++){ car=0; int m=number1[i];//m=3 int j; for( j=0;j<num2.length();j++){ int n=number2[j];//6,5,4 int multi=m*n+car; car=(result[i+j]+multi)/10; result[j+i]=(result[i+j]+multi)%10;//result[0]=8,car=1 //System.out.println(result[j+i]); } result[j+i]=result[j+i]+car; /* for(int h=i;h<j+i+2;h++) System.out.print(result[h]+" "); System.out.println();*/ if(i==num1.length()-1){ if(car!=0) len=j+i+1; else len=j+i; } // System.out.println(len); } StringBuilder str=new StringBuilder(); for(int i=0;i<len;i++){ str.append(result[i]); } return str.reverse().toString(); }
以上是关于leetcode字符串系列的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段