算法题目---字符串

(一).介绍

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

(二).具体题目

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();
    }

}
相关推荐
乐迪信息34 分钟前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉
Sirens.2 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
和裕2 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法
tangguofeng2 小时前
不带头结点的链队操作集(不含InitFlag)(C语言版)
算法
苏打豆4 小时前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
蛋蛋的就会顺顺的4 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
老歌老听老掉牙4 小时前
麻花钻切屑形态演变的力学机制与临界条件分析
python·算法·钻头
zhangfeng11335 小时前
国产GPU/AI算力芯片现状(修订完整版 · 截至2026年9月
人工智能·算法·ai编程·npu
学代码的CJY5 小时前
从代码出发理解时间复杂度与空间复杂度
数据结构·算法
白帽攻防录6 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt