zoukankan      html  css  js  c++  java
  • [面试题]实现String.IndexOf功能

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

    13
    14        /// <summary>
    15        /// 实现字符串的IndexOf 功能 
    16        /// </summary>
    17        /// <param name="strMain"></param>
    18        /// <param name="strExtre"></param>
    19        /// <returns></returns>

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

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

    51            }

    52
    53            return index;
    54        }

    55    }
  • 相关阅读:
    php 计算两个日期相差天数
    Linux系统查找清理磁盘大文件
    虚拟机重启网络服务失败,当查看状态显示错误Failed to start LSB......
    c++简单编写线性表(实验)
    学校的c++程序课程设计(简单的写法 并无太多c++的特色)
    C语言简单实现链栈基本几个功能
    简单用数组模拟顺序栈(c++)
    详细易懂的二叉树遍历(先中后)
    大数加法之C语言函数法(只有正数版)
    有关Java垃圾回收的几个问题
  • 原文地址:https://www.cnblogs.com/sskset/p/715213.html
Copyright © 2011-2022 走看看