[面试题]实现String.IndexOf功能

 1 None.gif   class  Program
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        static void Main(string[] args)
 4ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 5InBlock.gif            string str1 = "";
 6InBlock.gif            string str2 = "";
 7InBlock.gif
 8InBlock.gif            Console.WriteLine(str1.IndexOf(str2));
 9InBlock.gif            Console.WriteLine(StringIndexOf(str1, str2));
10InBlock.gif
11InBlock.gif            Console.ReadKey();
12ExpandedSubBlockEnd.gif        }

13InBlock.gif
14ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
15InBlock.gif        /// 实现字符串的IndexOf 功能 
16InBlock.gif        /// </summary>
17InBlock.gif        /// <param name="strMain"></param>
18InBlock.gif        /// <param name="strExtre"></param>
19ExpandedSubBlockEnd.gif        /// <returns></returns>

20InBlock.gif        static int StringIndexOf(string strMain, string strExtre)
21ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
22InBlock.gif            if (strMain == null || strExtre == null)
23InBlock.gif                throw new Exception("String cannot be null.");
24InBlock.gif            if (strExtre.Length == 0return 0;
25InBlock.gif            if (strExtre.Length > strMain.Length) return -1;
26InBlock.gif
27InBlock.gif            //返回值
28InBlock.gif            int index = -1;
29InBlock.gif            //获取附加字符串首字符 
30InBlock.gif            char c = strExtre[0];
31InBlock.gif            //在主字符串中搜索首字符
32InBlock.gif            for (int i = 0; i < strMain.Length; i++)
33ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
34InBlock.gif                //不匹配的话继续搜索
35InBlock.gif                if (false == strMain[i].Equals(c)) continue;
36InBlock.gif
37InBlock.gif                int Length = 1;
38InBlock.gif                //从次首字符开始比较
39InBlock.gif                for (int j = 1; j < strExtre.Length; j++)
40ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
41InBlock.gif                    if ((i + j) >= strMain.Length) break;
42InBlock.gif                    if (false == strMain[i + j].Equals(strExtre[j])) break;
43InBlock.gif                    Length++;
44ExpandedSubBlockEnd.gif                }

45InBlock.gif                //条件匹配即退出
46InBlock.gif                if (Length == strExtre.Length)
47ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
48InBlock.gif                    index = i;
49InBlock.gif                    break;
50ExpandedSubBlockEnd.gif                }

51ExpandedSubBlockEnd.gif            }

52InBlock.gif
53InBlock.gif            return index;
54ExpandedSubBlockEnd.gif        }

55ExpandedBlockEnd.gif    }
posted on 2007-04-16 13:51 K3 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sskset/archive/2007/04/16/715213.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值