寻找失落的SubString

【回目录】

面试或者笔试的时候常常会遇到这样的问题,写一个函数,判断一个字符串里是否包含有给定的子字符串。当然,人家并不是想看看你是否知道System.String实例对象中包含有Contains这个函数,而是想通过观察面试者书写代码来看看他的技术水平。

昨天我在某国内外知名的软件公司二面时就遇到了这样的问题,这是我第二次遇到这个问题,上一次大概是一年多以前了。昨天一边写代码一边就在想,这个问题比较典型,有必要专门放到我的这个《.NET程序员技术面试迷你手册》里,今天专门把代码又在Visual Studio里重新写了一遍,发现了几处昨天的疏漏。即兴发挥在纸上写代码,最大的困难就是找不到感觉,不过现在不是抱怨的时候,过去的就过去了吧,一切向前看。

   1: using System;
   2:  
   3: namespace Autumoon.PrepareForInterview.CSharpProgramming
   4: {
   5:     public static class ContainsDemo
   6:     {
   7:         public static bool ContainsSubString(string original, string subString)
   8:         {
   9:             if (String.IsNullOrEmpty(original) || String.IsNullOrEmpty(subString) || original.Length < subString.Length)
  10:             {
  11:                 return false;
  12:             }
  13:  
  14:             int length = original.Length;
  15:             int subLength = subString.Length;
  16:  
  17:             for (int index = 0; index < length; index++)
  18:             {
  19:                 if (original[index] == subString[0])
  20:                 {
  21:                     // Goal: If the subString is longer than the rest original string, should return False directly.
  22:                     if (subLength > length - index)
  23:                     {
  24:                         return false;
  25:                     }
  26:  
  27:                     // Goal: Start to compare the reset of original string and sub string.
  28:                     for (int subIndex = 0; (subIndex < subLength && index < length); subIndex++)
  29:                     {
  30:                         if (original[index + subIndex] != subString[subIndex])
  31:                         {
  32:                             break;
  33:                         }
  34:  
  35:                         // The only exit to return True.
  36:                         if (subIndex == subLength - 1)
  37:                         {
  38:                             return true;
  39:                         }
  40:                     }
  41:                 }
  42:             }
  43:  
  44:             return false;
  45:         }
  46:     }
  47: }

Finding Sub String

posted @ 2008-08-26 15:36  麦机长  阅读(4345)  评论(24编辑  收藏  举报