最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

本来做这种题目的时候是不想用c#自己内嵌的类的方法的。但是这题如果不用的话会比较麻烦。要分析很多情况,如果是数组稍微好处理一些,但字符串就很难完全自己去写方法了。
我用的比较重要的方法是indexof(),主要功能是找到括号里的字符串在原字符串里的位置。
然后我们可以分析一下
1.首先我们随便让ans为某一个字符串(例如strs[0])
2.然后我们遍历字符串组,每一个字符串用indexof这个方法去查找ans。
3.如果每一个字符串查找到ans的位置都是0,即每一个字符串都存在相同的ans串。这时候就说明找到答案了。
4.如果存在某个字符串查不到ans(表现为查找出来的位置是-1)或者查到的位置在某个正数上(表现为查找出来的位置不是0)
那么这种情况下我们就可以让ans删去最后一个字母,长度减一。然后继续进行查找再转到2。
如果一直查找不到,直到ans的长度为零,输出空“”;
代码如下:

public class Solution
        {
            public string LongestCommonPrefix(string[] strs)
            {
                if (strs.Length == 0) return "";
                string ans = strs[0]; //如果是strs[0]外的字符串,男下面遍历需要从0开始
                for (int i = 1; i < strs.Length; i++)
                {
                    while (strs[i].IndexOf(ans) != 0)
                    {
                        ans = ans.Substring(0, ans.Length - 1);
                        if (ans.Length==0) return "";
                    }
                }
                return ans;
            }
        }

在这里插入图片描述
但是时间和内存的表现不是很好。
不知道为什么,我简单难度的题目完成度比一般难度的完成度差好多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值