【ONE·基础算法 || 字符串】

本文介绍了编程中的字符串类题型,包括最长公共前缀、最长回文子串、二进制求和(高精度加法)和字符串相乘(高精度乘法)的解题思路和示例代码,帮助读者提升字符串处理和高精度计算能力。

在这里插入图片描述

总言

  主要内容:编程题举例,熟悉理解字符串类题型。
  
  


  
  
  
  

1、字符串

  主要在于熟悉字符串类的OJ题常用容器和接口。主要与其它算法结合使用。
  
  
  

2、最长公共前缀(easy)

  题源:链接

在这里插入图片描述
  
  

2.1、题解

  1)、思路分析
  这里需要注意理解,一个字符串的前缀是从该字符串的第一个字符起始的一个子串
  方法一: 字符串两两比较,可以先找出前两个的最长公共前缀,然后拿这个最长公共前缀依次与后⾯的字符串比较,获取新的最长公共前缀,这样所有字符串比较完成,就能获取到最终结果。

在这里插入图片描述
  
  方法二: 统一比较所有字符串中 i 位置处的字符是否相同。何时结束比较?(遍历到某一字符串的尾部,或当前遍历字符与其它字符不相同,说明此前的字符均为公共前缀。)
在这里插入图片描述

  
  
  2)、题解
  字符串两两进行比较的写法:

class Solution {
   
   
public:
    string longestCommonPrefix(vector<string>& strs) {
   
   
        //一个字符串的前缀是从该字符串的第一个字符起始的一个子串
        string ret = strs[0];//PS:数组中只有一个字符串,也满足条件(不进入循环,直接返回strs[0])。
        for(int i = 1; i < strs.size(); ++i)
        {
   
   
            ret = stringcompare(ret,strs[i]);
        }
        return ret;
    }

    //两字符串比较
    string stringcompare(string& s1, string& s2)
    {
   
   
        int i = 0;
        int len = min(s1.size(), s2.size());
        while(i < len && s1[i] == s2[i]) //当两字符串均存在,且当前位置元素相同时
            i++;
        return s1.substr(0,i);//string substr (size_t pos = 0, size_t len = npos) const;
    }
};

  
  字符串统一进行比较的写法:

class Solution {
   
   
public:
    string longestCommonPrefix(vector<string>& strs) {
   
   
        
        string ref = strs[0];//以第一个字符串作为参照,后续字符串进行比较判断
        for
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值