首页 > 编程语言 >10.优化算法之字符串

10.优化算法之字符串

时间:2024-07-03 10:01:46浏览次数:26  
标签:10 String int StringBuffer length ret 算法 字符串 left

1.最长公共前缀

14. 最长公共前缀 - 力扣(LeetCode)

class Solution {
    public static String longestCommonPrefix(String[] strs) {
        if(strs==null||strs.length==0){
            return "";
        }
        int length=strs.length;
        for(int i=0;i<strs[0].length();i++){//第一个字符串的截止范围
            char ch=strs[0].charAt(i);//字符串的第一个字母
            for(int j=1;j<length;j++){//和每一个字符串是否匹配
                if(i==strs[j].length()||strs[j].charAt(i)!=ch){
                    //弹出的条件
                    return strs[0].substring(0,i);
                }
            }
        }
        return strs[0];
    }
}

 2.最长回文子串

5. 最长回文子串 - 力扣(LeetCode)

class Solution {
    public String longestPalindrome(String s) {
        int begin=0,len=0,n=s.length();
        for(int i=0;i<n;i++){
            //先扩展奇数长度的子串
            int left=i,right=i;
            while(left>=0&&right<n&&s.charAt(left)==s.charAt(right)){
                left--;
                right++;
            }
            if(right-left-1>len){
                begin=left+1;
                len=right-left-1;
            }
            //扩展偶数长度的子串
            left=i;right=i+1;
            while(left>=0&&right<n&&s.charAt(left)==s.charAt(right)){
                left--;
                right++;
            }
            if(right-left-1>len){
                begin=left+1;
                len=right-left-1;
            }
            
        }
        return s.substring(begin,begin+len);
    }
}

 3.二进制求和

67. 二进制求和 - 力扣(LeetCode)

class Solution {
    public String addBinary(String a, String b) {
        StringBuffer ret=new StringBuffer();
        int cur1=a.length()-1,cur2=b.length()-1;
        int t=0;
        while(cur1>=0||cur2>=0||t!=0){
            if(cur1>=0){
                t=t+a.charAt(cur1--)-'0';
            }
            if(cur2>=0){
                t=t+b.charAt(cur2--)-'0';
            }
            ret.append((char)('0' + (t % 2)));
            t=t/2;
        }
        ret.reverse();
        return ret.toString();
    }
}

4.字符串相乘 

43. 字符串相乘 - 力扣(LeetCode)

class Solution {
    public String multiply(String num1, String num2) {
        int m = num1.length(), n = num2.length();
        char[] n1 = new StringBuffer(num1).reverse().toString().toCharArray();
        char[] n2 = new StringBuffer(num2).reverse().toString().toCharArray();
        int[] tmp = new int[m + n - 1];
        // 1. ⽆进位相乘后相加
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                tmp[i + j] += (n1[i] - '0') * (n2[j] - '0');

        // 2. 处理进位
        int cur = 0, t = 0;
        StringBuffer ret = new StringBuffer();
        while (cur < m + n - 1 || t != 0) {
            if (cur < m + n - 1)
                t += tmp[cur++];
            ret.append((char) (t % 10 + '0'));
            t /= 10;
        }

        // 3. 处理进位
        while (ret.length() > 1 && ret.charAt(ret.length() - 1) == '0')
            ret.deleteCharAt((ret.length() - 1));

        return ret.reverse().toString();
    }
}

标签:10,String,int,StringBuffer,length,ret,算法,字符串,left
From: https://blog.csdn.net/m0_47017197/article/details/140068291

相关文章

  • 12.优化算法之队列+宽搜(BFS)
    BFS——广度优先算法(BreadthFirstSearch)-CSDN博客1.N叉树的层序遍历(广度优先搜索)429.N叉树的层序遍历-力扣(LeetCode)classSolution{publicList<List<Integer>>levelOrder(Noderoot){List<List<Integer>>ret=newLinkedList<>();......
  • Luogu P10674 【MX-S1-T3】电动力学
    首先考虑这个\(S,T\)肯定需要固定一个算另一个的方案数。如果固定\(S\),会发现非常不好给\(T\)下限制。于是考虑固定\(T\),对\(S\)计数。首先考虑如果\(T\)只有\(2\)个点\(x,y\),该怎么对\(S\)计数。考虑到这个简单路径的定义是不经过重点,考虑找到点双。然后能......
  • 基于方阵的简单电路连通判断算法
    对于一个电路系统中,给定若干个元器件和若干条导线,以及使用导线连接元器件的操作过程,如何判断操作完成后最终某个元器件是否在与电源相连的回路中?实际对于该类问题,无需纠结导线的连接方式与所谓的“回路”,只需判断元器件是否间接或直接与电源正负极相连。本文提出使用方阵存储元......
  • windows10添加多个东芝14T硬盘系统加载不出来的问题
    windows10添加多个东芝14T硬盘系统加载不出来的问题1.明明是加了一个14T东芝硬盘,系统就是加载不出来,从BIOS上也能看2.解决方法此电脑右键–》管理3.设置管理器—》标准sataahci控制器4.右键卸载设备,点击卸载,系统系统重启5.重启好后就能看到新挂的硬盘了......
  • 面试:10亿数据如何最快速插入MySQL?
    转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g 最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL?假设和面试官明确后,有如下约束10亿条数据,每条数据1Kb数据内容......
  • 【hash】hash算法、hash函数、哈希表、布隆过滤器、一致性哈希
    哈希函数的基本性质函数定义域是无穷的,值域相对有限(但也很大,比如2的64次方)输入同样样本一定得到同样的输出输入不同样本可能得到相同输出,此时叫哈希碰撞输入大量不同的样本,得到大量输出值,会几乎均匀的分布在整个输出域上布隆过滤器通过几个不同哈希函数计算哈希值,对位......
  • 排序算法
    排序算法的整理和比较。一、基本概念  排序算法就是将一序列对象根据某个关键字进行排序。各个排序算法的时间复杂度和空间复杂度不尽相同,所需的条件和适用范围也不同。一般根据元素的相对位置分为稳定排序算法和非稳定的排序算法。也可根据执行情况分为内排序和外排序。另......
  • 新鲜出炉,苹果cmsV10的uniapp小程序前端
    新鲜出炉,苹果cmsV10的uniapp小程序前端项目背景找了一圈苹果cms的uniapp小程序都没找到,所以就自己写一个了,现在发出来给大家用有需要的亲加vx: z_fenghuaxueyue  项目截图首页 列表页 ;详情页 video播放 我的页面 后台页面 ;部分接口代码截图......
  • 请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串
    /请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。/#include<stdio.h>#include<time.h>#include<stdlib.h>#defineN200intfun(char*buff)......
  • [JLU] 数据结构与算法上机题解思路分享-第三次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A图的创建分数10作者朱允刚单位吉林大学请编写程序创建一个有向图。有向图中包含......