LeetCode-Easy部分中标签为String 14. Longest Common Prefix

本文介绍了一种寻找多个字符串中最长公共前缀的有效算法,并通过示例解释了其工作原理。该算法首先确定前两个字符串的公共部分,然后将这部分与剩余的字符串逐一比较,逐步缩短公共前缀直至找到最终答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题

Write a function to find the longest common prefix string amongst an array of strings.
举例:

"abab","aba","" 返回""
"abab","aba" 返回"aba"

代码分析

求各个字符串的最大公共前缀。先求出前2个最大公共前缀 cstr,然后拿它在之后字符依次比较,有一个不是,则丢弃 cstr 的最后一个字符。

实现代码

          public string LongestCommonPrefix(string[] strs)
          {
               if(strs==null || strs.Length==0)
                   return "";
               if (strs.Length == 1)
                   return strs[0];

               string longestPrefix = firstTwoStrs(strs);
               if (longestPrefix.Length == 0)
                  return "";
              int i=2;
              while(i < strs.Length)
              {
                  if (strs[i].IndexOf(longestPrefix) != 0)
                  {
                      longestPrefix = 
                      longestPrefix.Substring(0, longestPrefix.Length - 1);
                      i = 1;
                      if (longestPrefix.Length == 0)
                          return "";
                  }
                  i++;
              }
              return longestPrefix;
          }

        //头两个字符串的公共串
        private string firstTwoStrs(string[] strs)
        {
            if (strs.Length < 2) return "";
            StringBuilder sb = new StringBuilder();
            int len = strs[0].Length < strs[1].Length ? strs[0].Length : strs[1].Length;
            for(int i=0;i<len;i++)
            {
                if (strs[0][i] == strs[1][i])
                    sb.Append(strs[0][i]);
                else
                    break;
            }
            return sb.ToString();
        }

更多string题目

http://blog.csdn.net/daigualu/article/details/69566863

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值