/*
* @lc app=leetcode.cn id=14 lang=c
*
* [14] 最长公共前缀
*
* https://leetcode-cn.com/problems/longest-common-prefix/description/
*
* algorithms
* Easy (32.10%)
* Total Accepted: 54.4K
* Total Submissions: 169.3K
* Testcase Example: '["flower","flow","flight"]'
*
* 编写一个函数来查找字符串数组中的最长公共前缀。
*
* 如果不存在公共前缀,返回空字符串 ""。
*
* 示例 1:
*
* 输入: ["flower","flow","flight"]
* 输出: "fl"
*
*
* 示例 2:
*
* 输入: ["dog","racecar","car"]
* 输出: ""
* 解释: 输入不存在公共前缀。
*
*
* 说明:
*
* 所有输入只包含小写字母 a-z 。
*
*/ char* longestCommonPrefix(char** strs, int strsSize) {
if(strsSize == ) {
return "";
}
int index = , i = ;
char flag = strs[][index];
while(flag) {
for(i = ; i < strsSize; i++) {
if(strs[i][index] != flag)
break;
}
if(i < strsSize)
break;
flag = strs[][++index];
}
strs[][index] = '\0';
return strs[];
}

这个函数有两个参数,一个是 strs指针的数字(可以理解为二维数组,行代表第n个字符串,列代表其中的第m个字符) strssize是字符串的个数(可以理解为这个二维数组的行数)

如果长度是0的话,那么直接放回空 即 " "即可。

然后flag为 第一个字符串中的第一个字符。循环条件是flag依旧存在。flag从第一个字符串的第一个字符循环到最后一位。

在这个循环中嵌套一个循环,此循环为循环字符串,即第二个字符串,第三个。。第四个。。 比对的都是相同的位置的字符。

如果出现了不相等的情况,就退出循环,如果此时的i小于字符串的个数,则说明 没有达到 公共前缀的要求 ,就退出整个大循环。

循环外把 第一个字符串的每循环到的位置的字符变为终结符。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=14 lang=python3
#
# [14] 最长公共前缀
#
# https://leetcode-cn.com/problems/longest-common-prefix/description/
#
# algorithms
# Easy (32.10%)
# Total Accepted: 54.4K
# Total Submissions: 169.3K
# Testcase Example: '["flower","flow","flight"]'
#
# 编写一个函数来查找字符串数组中的最长公共前缀。
#
# 如果不存在公共前缀,返回空字符串 ""。
#
# 示例 1:
#
# 输入: ["flower","flow","flight"]
# 输出: "fl"
#
#
# 示例 2:
#
# 输入: ["dog","racecar","car"]
# 输出: ""
# 解释: 输入不存在公共前缀。
#
#
# 说明:
#
# 所有输入只包含小写字母 a-z 。
#
#
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs)==0:
return ''
if len(strs)==1:
return strs[0]
a = min(strs) #这里是ascii码的大小
b = max(strs)
for i in range(len(a)):
if a[i]!=b[i]:
return a[:i]
return a

这里运用了一个知识,min 和 max是求字符的ascii码大小,找出ascii码最小的和最大的,然后进行逐个比较。

最新文章

  1. 3.Windows Server 2012 R2数据库部署
  2. 什么是XMLA-- XML for Analysis
  3. 《Linux内核设计与实现》读书笔记 第二章 从内核出发
  4. 【液晶模块系列基础视频】1.3.iM_TFT30模块简介
  5. php插件机制实现原理
  6. JavaScript语言内置对象
  7. bzoj 1196
  8. 2.7 Structured Regression Models
  9. asp.net MVC 验证注解
  10. Duanxx的C++学习: 使用类没有被定义 原因及解决方法
  11. 2440裸 Delay(); 和 while(!(rUTRSTAT0 &amp;amp; 0x2)); 问题
  12. nodejs全局安装与本地安装区别
  13. 【LeetCode】数组-6(561)-Array Partition I(比较抽象的题目)
  14. [特斯拉组件]ios高性能PageController
  15. Android Binder IPC详解-Android学习之旅(96)
  16. 带logo图片或不带logo图片的二维码生成与解析,亲测成功
  17. Python中应该使用%还是format来格式化字符串?
  18. 怎么用Verilog语言描述同步FIFO和异步FIFO
  19. 进阶之路(基础篇) - 009 通过底层AVR方法实现SPI数据传输
  20. 剑指offer练习

热门文章

  1. sqlalchemy &amp; python &amp; datatables &amp; javascript 中文拼音排序
  2. SQL Server -&gt;&gt; DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异
  3. May 12th 2017 Week 19th Friday
  4. May 09th 2017 Week 19th Tuesday
  5. js原型链继承及调用父类方法
  6. 【BZOJ3495】PA2010 Riddle
  7. 2018.10.10 MAC 的Launchpad图标改变大小的设置
  8. git bush 代码提交
  9. Android学习笔记_16_添加多个Activity、参数传递、请求码和结果码使用
  10. 一个JS对话框,可以显示其它页面,