当前位置: 首页 > article >正文

27.日常算法

1. 最后一个单词的长度

题目来源
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例 1:
输入:s = “Hello World”
输出:5
解释:最后一个单词是“World”,长度为 5。

class Solution {
public:
    int lengthOfLastWord(string s) {
        int n = s.size();
        int end = n - 1;
        while (end >= 0){
            if (s[end] == ' ') end--;
            else break;
        }
        int idx = end;
        while (idx >= 0){
            if (s[idx] == ' ') break;
            idx--;
        }
        return end - idx;
    }
};

2. 最长公共前缀

题目来源
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。

示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        for (int i = 0; i < strs[0].size(); i++){
            char ch = strs[0][i];
            for (int j = 1; j < strs.size(); j++){
                if (strs[j][i] != ch || i == strs[j].size()) 
                    return strs[0].substr(0, i);
            }
        }
        return strs[0];
    }
};

二分查找

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int minlen = min_element(strs.begin(), strs.end(), [](const string& s, const string& t) {return s.size() < t.size();})->size(); // min_element返回的是strs中长度最短的字符串的迭代器,所以这里需要->size()获取长度
        int left = 0, right = minlen;
        while (left < right){
            int mid = (right - left + 1) / 2 + left;
            if (isCommon(strs, mid)){
                left = mid;
            }else right = mid - 1;
        }
        return strs[0].substr(0, right);
    }
    bool isCommon(vector<string>& strs, int len){
        string temp = strs[0].substr(0, len);
        for (int i = 1; i < strs.size(); i++){
            for (int j = 0; j < temp.size(); j++){
                if (temp[j] != strs[i][j]) return false;
            }
        }
        return true;
    }
};

http://www.kler.cn/a/523381.html

相关文章:

  • FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)
  • 层次聚类构建层次结构的簇
  • Nginx前端后端共用一个域名如何配置
  • 准备知识——旋转机械的频率和振动基础
  • Spring Security(maven项目) 3.0.2.9版本
  • Coze,Dify,FastGPT,对比
  • 【Leetcode 热题 100】152. 乘积最大子数组
  • 2025春晚临时直播源接口
  • Jellyfin的快速全文搜索代理JellySearch
  • iperf 测 TCP 和 UDP 网络吞吐量
  • 2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型
  • t113 procd-init文件系统增加自己的程序文件
  • 7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)
  • 前端——js高级25.1.27
  • 20250128 大语言模型(Large Language Model, LLM)已成为自然语言处理(NLP)领域的重要突破
  • 脚本/编译安装nginx1.11.10
  • ArcGIS10.2 许可License点击始终启动无响应的解决办法及正常启动的前提
  • 使用 PyTorch 实现线性回归:从零开始的完整指南
  • Ubuntu 18.04安装Emacs 26.2问题解决
  • 大一计算机的自学总结:位运算的应用及位图
  • 在做题中学习(82):最小覆盖子串
  • Vue 响应式渲染 - 待办事项简单实现
  • 案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
  • 图神经网络驱动的节点分类:从理论到实践
  • 神经网络和深度学习
  • DeepSeek-R1本地部署笔记