探秘力扣之谜:如何轻松解决最长公共前缀问题?

news/2024/10/30 23:18:10/

在这里插入图片描述

本篇博客我会讲解力扣中的“14. 最长公共前缀”这道题,这是题目链接。

先来审题:
在这里插入图片描述
以下是几个输出示例:
在这里插入图片描述
提示:
在这里插入图片描述
这道题的思路其实并不难,也是一些字符串的常规操作的结合。大家可以先思考一下,再来听我讲解。

思路是这样的:外层循环遍历第一个字符串的每一个字符,内层循环遍历其他字符串对应位置的字符,直到遍历到不匹配的字符,或者全部匹配。

如何遍历第一个字符串呢?常规思路是这样的:

for (char* cp = str[0]; *cp; ++cp)
{// ...
}

但是这么写有一个问题:你怎么知道遍历的是第一个字符串中的第几个字符?如果不知道的话,就无法匹配其他字符串相同位置的字符了。

所以,最好用下标来遍历。你可以这么写:

int len = strlen(strs[0]);
for (int i = 0; i < len; ++i)
{// ...
}

但这么写需要先求字符串的长度,我不太喜欢。我更喜欢这么写:

for (int i = 0; strs[0][i]; ++i)
{// ...
}

这种写法和第一种写法中的cp指针遍历有着异曲同工之妙,都是遍历到’\0’就停止遍历。

内层循环应该遍历每一个字符串,这就是遍历数组的常规操作。

char * longestCommonPrefix(char ** strs, int strsSize){// 遍历第一个字符串for (int i = 0; strs[0][i]; ++i){// 遍历字符串数组for (int j = 0; j < strsSize; ++j){}}
}

下面检查每个字符串对应位置的字符是否和第一个字符串对应位置的字符相同,如果相同,就继续遍历;如果不相同,则遍历结束,返回该位置之前的前缀。当然,如果2层for循环都走完了,就说明所有的字符串都是相同的,返回第一个字符串即可。

char * longestCommonPrefix(char ** strs, int strsSize){// 遍历第一个字符串for (int i = 0; strs[0][i]; ++i){// 遍历字符串数组for (int j = 0; j < strsSize; ++j){if (strs[j][i] != strs[0][i]){// 遍历结束strs[0][i] = '\0';return strs[0];}}}// 所有字符串均相同return strs[0];
}

在这里插入图片描述
这就通过了。是不是很简单?

总结

  1. 遍历字符串,除了用cp指针遍历,还可以用下标遍历。
  2. 返回字符串前缀,可以把前缀的下一个字符改成’\0’,再返回起始地址。

感谢大家的阅读!


http://www.ppmy.cn/news/62977.html

相关文章

【Linux】基础IO——文件描述符

目录 什么是文件描述符标准输入、输出、错误的返回值类型FILE*的理解进程中文件描述符的分配规则重定向的原理重定向的实际使用方法dup2 如何理解缓冲区 什么是文件描述符 在基础IO的上一篇博客里有提到过&#xff0c;系统调用open与close的返回值问题&#xff1a; 成功返回文…

在 TypeScript + Vue 项目中配合 Prettier 使用 ESLint

在 TypeScript Vue 项目中配合 Prettier 使用 ESLint 在软件开发中&#xff0c;编码风格是一种规范化的约定&#xff0c;用于定义代码的格式&#xff0c;样式和结构。统一编码风格有以下几点好处&#xff1a; 提高代码可读性&#xff1a;统一的编码风格使代码更易读&#xf…

TypeScript(一):初识TS、TS的数据类型、一些语法细节

TypeScript&#xff1a;第一章 一、初识TypeScript1.TS是干嘛的2.安装及运行ts文件3.变量的声明4.变量的类型推断5.JS中的类型声明 二、TypeScript的数据类型1.any类型2.unknow类型3.void类型4.never类型&#xff08;了解&#xff09;5.tuple类型&#xff08;了解&#xff09; …

JVM内存模型基础

大家好&#xff0c;我是易安&#xff01; 我们知道运行一个Java应用程序&#xff0c;我们必须要先安装JDK或者JRE包。这是因为Java应用在编译后会变成字节码&#xff0c;然后通过字节码运行在JVM中&#xff0c;而JVM是JRE的核心组成部分。 JVM不仅承担了Java字节码的分析&#…

什么是机房UPS?一文带您了解!

什么是机房UPS? 机房UPS是指专门为机房等大型计算机设施设计的不间断电源。它通常由高性能的电池组、充电器、逆变器、静态开关、监控系统和管理软件等组成&#xff0c;能够为计算机设备提供稳定、可靠的电源保障。 机房UPS的作用 机房UPS的作用主要是两方面&#xff1a; 1…

Unity 向量

向量的基本概念 向量&#xff1a;既有大小又有方向的量叫做向量。 零向量&#xff1a;各分量都是0的向量。 归一化向量&#xff1a;方向不变&#xff0c;将向量的长度变为1。 单位向量&#xff1a;长度为1的向量(归一化后的向量)。 向量的模&#xff1a;只有长度没有方向。…

Amper Music:AI创意音乐工具

【产品介绍】 Amper Music 是一家位于美国纽约的人工智能音乐技术公司&#xff0c;成立于2014年。 Amper Music是一个AI创意音乐工具&#xff0c;能让任何人为自己的内容制作原创音乐。无论你需要为视频、播客或互动内容配乐&#xff0c;Amper Music都能提供一个简单而强大的解…

阿里云Alibaba Cloud Linux镜像操作系统性能兼容如何?

阿里云服务器操作系统Alibaba Cloud Linux镜像怎么样&#xff1f;可以代替CentOS吗&#xff1f;Alibaba Cloud Linux兼容性如何&#xff1f;有人维护吗&#xff1f;漏洞可以修复吗&#xff1f;Alibaba Cloud Linux完全兼容CentOS&#xff0c;并由阿里云官方免费提供长期维护。 …