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"

说明:

  1. num1 和 num2 的长度小于110。
  2. num1 和 num2 只包含数字 0-9
  3. num1 和 num2 均不以零开头,除非是数字 0 本身。
  4. 不能使用任何标准库的大数类型(比如 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();

    }

原文地址:https://www.cnblogs.com/HannahLihui/p/10170799.html

时间: 2024-11-08 19:24:00

leetcode字符串系列的相关文章

LeetCode --- 字符串系列 --- 机器人能否返回原点

机器人能否返回原点 小注释:都说算法题刷的多了,越做越熟练,因为差不多都是那几个套路 今天碰到这个题目,有点感触.很快就解出来了,虽然是简单题. 做这题之前,遇到的是分割平衡字符串 有点类似,所以能很快解出下面这道题 题目 在二维平面上,有一个机器人从原点 (0, 0) 开始. 给出它的移动顺序,判断这个机器人在完成移动后是否在?(0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动. 机器人的有效动作有?R(右),L(左),U(上)和 D(下). 如果机器人在

LeetCode --- 字符串系列 --- 特殊等价字符串组

特殊等价字符串组 注释:这道题目题意太过难理解,理解题意花了几小时... 下面将对题目进行括号注释.... 题目 你将得到一个字符串数组 A.比如 (["a2cd","ac2d","2acd", "c2ad"]) 如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的. (比如上面给出的字符串数组,若其中两个数组元素字符串,自身的字符发生任意次数的移动, 移动次数不用相等,最后这两个字符串可以相等,那么

Leetcode算法系列(链表)之两数相加

Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和.您可以假设除了数字 0 之外,这两个数都不会以 0 开头.示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 链接:https://le

(原创)Python字符串系列(1)——str对象

在本博客 <Python字符串系列> 中,将介绍以下内容: Python内置的str对象及操作 字符串的格式化 Python中的Unicode字符串 Python中的正则表达式 re模块 本文将介绍Python内置的 str 类型,列举Python中字符串对象支持的方法,使用这些方法可以实现强大的字符串处理功能. 在Python 2 中,普通字符串与Unicode字符串有着明确的区分,二者都是Python内置的基本类型,例如: >>> type(str) <type '

字符串系列函数(不断跟新)

1.sprintf,sprintf_s sprintf(char* buffer, const char* format, [argument]); vs下需要加上_CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int main() { char name[1]; int input = 9099; sprintf(name,"%d", input); system("pause&q

Leetcode permutation 系列

关于permutation的讲解,请参见http://blog.csdn.net/xuqingict/article/details/24840183 下列题目的讲解均是基于上面的文章: 题1: Next Permutation Total Accepted: 8066 Total Submissions: 32493My Submissions Implement next permutation, which rearranges numbers into the lexicographic

leetcode 字符串分割对称

1 public class Solution { 2 public List<List<String>> partition(String s) { 3 int len=s.length(); 4 boolean dp[][]=new boolean[len][len]; 5 get(dp,s); 6 ArrayList<ArrayList<String>> res=new ArrayList<ArrayList<String>>(

【Leetcode长征系列】Letter Combinations of a Phone Number

原题: Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Input:Digit string "23" Output: ["ad", "ae"

【Leetcode长征系列】Merge k Sorted Lists

原题: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思路:两条两条地合并.时间复杂度为O(n),n为所有链表节点和. 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :