寻找失落的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: }
转载请注明出处。版权所有©2022 麦机长,保留所有权利。