算法题目---字符串

(一).介绍

字符串的算法题目,都是和别的算法结合来去出题的,例如,模拟,高精度加减等等

(二).具体题目

1.最长公共前缀

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

解法:模拟

java 复制代码
class Solution {
    public String longestCommonPrefix(String[] strs) {
        int len=strs.length;
        int len0=strs[0].length();  //以第一个字符串的长度为标准
        for (int i = 0; i < len0; i++) {
            char ch=strs[0].charAt(i);  //以第一个字符串的第i个字符为标准
            for (int j = 0; j < len; j++) {
                if (i==strs[j].length()||strs[j].charAt(i)!=ch){
                    return strs[0].substring(0,i);
                }
            }
        }
        return strs[0];
    }
}

2.最长回文子串

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

解法:中心扩展算法

java 复制代码
class Solution {
    public String longestPalindrome(String s){
        int begin=0; //记录开始位置
        int len=0;   //记录最长回文串的长度
        int lenS=s.length();
        for (int i = 0; i < lenS; i++) {  //固定所有的中间点
            //扩展奇数长度的子串
            int left=i;
            int right=i;
            while (left>=0 && right<lenS && s.charAt(left)==s.charAt(right)){
                left--;
                right++;
            }
            //取最长长度的回文子串
            if (right-left-1>len){   // 当执行到这里的时候,说明 s.charAt(left)和 s.charAt(right) 不相等了,那么相等的部分为 left+1  和  right-1
                begin=left+1;
                len=right-left-1;
            }

            //扩展偶数长度的子串
            left=i;
            right=i+1;
            while (left>=0 && right<lenS &&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)

解法:模拟列竖式计算

java 复制代码
class Solution {
    public String addBinary(String a, String b){
        StringBuilder stringBuilder=new StringBuilder();
        int cur1=a.length()-1;
        int cur2=b.length()-1;
        int t=0;  //表示进位
        while (cur1>=0||cur2>=0){
            if (cur1>=0){
                int value_A = a.charAt(cur1)-'0';
                t+=value_A;
                cur1--;
            }
            if (cur2>=0){
                int value_B=b.charAt(cur2)-'0';
                t+=value_B;
                cur2--;
            }
            stringBuilder.append(t%2);  //由于是逢2进1,所以要%2
            t/=2;
        }
        if (t==1){  //处理特殊情况
            stringBuilder.append("1");
        }
        stringBuilder.reverse();  //由于添加的时候是正着添加的,所以要进行逆序
        return stringBuilder.toString();
    }
}

4.字符串相乘

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

解法:模拟

java 复制代码
class Solution {
    public String multiply(String num1, String num2){
        //1.优先处理前导零
        if ((num1.length()==1&&num1.charAt(0)=='0')||(num2.length()==1&&num2.charAt(0)=='0')){
            return "0";
        }
        //2.进行无进位相加
        char[] n1=new StringBuilder(num1).reverse().toString().toCharArray();
        char[] n2=new StringBuilder(num2).reverse().toString().toCharArray();
        int len1=n1.length;
        int len2=n2.length;
        int[] temp=new int[len1+len2-1];
        for (int i = 0; i < len1; i++) {
            int v1=n1[i]-'0';
            for (int j = 0; j < len2; j++) {
                int v2=n2[j]-'0';
                temp[i+j]+=v1*v2;
            }
        }
        //3.处理进位
        StringBuilder stringBuilder=new StringBuilder();
        int t=0; //表示进位
        for (int i = 0; i < temp.length; i++) {
            t+=temp[i];
            stringBuilder.append(t%10);
            t/=10;
        }
        //4.处理特殊情况
        if (t!=0){
            stringBuilder.append(t);
        }
        return stringBuilder.reverse().toString();
    }

}
相关推荐
小蒋学算法8 小时前
算法-交替删除操作后最后剩下的整数-跟着灵茶山艾府学算法
数据结构·算法
荆棘鸟智能8 小时前
林业遥感长势评估怎么做?从NDVI时序分析到LiDAR蓄积量回归
人工智能·算法·智慧林业
hhb_6189 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
朝朝辞暮i9 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
苏打豆10 小时前
Pinocchio源码阅读——刚体运动物理量空间变换及求导
c++·线性代数·算法·矩阵·机器人
FluxArt10 小时前
GPT Image 2.5 中文提示词教程:Flux Art 可复用模板
前端·gpt·算法
思麟呀10 小时前
位运算:从一个整数到一个集合
c语言·数据结构·c++·算法
阜阳山君GEO11 小时前
豆包 SEED 新版本 GEO 优化:信源金字塔、打分体系与避坑落地指南
人工智能·算法
晓天衡宇•评测社区11 小时前
晓天衡宇亮相 2026 云栖大会:迈向更可信的高质量评测
人工智能·算法·机器学习
CQU_JIAKE11 小时前
9.12[a]
算法