当前位置: 首页 > news >正文

寻找失落的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

相关文章:

  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • BZOJ 1455 罗马游戏 左偏树
  • Linux FTP(三)
  • 推荐一个好的数据库工具Embarcadero DBArtisan
  • weak_ptr
  • cocos2d函数
  • [iOS]iOS获取设备信息经常用法
  • 用Java实现按字节长度截取字符串的方法
  • Ocr识别开篇
  • 在安卓上运行TensorFlow:让深度学习进入移动端
  • NTFS权限
  • 一般杀毒软件检测病毒原理
  • 关于OleVariant类型的疑问???
  • 技术助力第三次革命
  • redis持久化之RDB
  • 【Leetcode】101. 对称二叉树
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Bytom交易说明(账户管理模式)
  • docker python 配置
  • ES2017异步函数现已正式可用
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Intervention/image 图片处理扩展包的安装和使用
  • Java,console输出实时的转向GUI textbox
  • Java超时控制的实现
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Laravel Telescope:优雅的应用调试工具
  • mac修复ab及siege安装
  • Mysql优化
  • php ci框架整合银盛支付
  • webpack4 一点通
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 对超线程几个不同角度的解释
  • 设计模式(12)迭代器模式(讲解+应用)
  • 首页查询功能的一次实现过程
  • 思否第一天
  • kubernetes资源对象--ingress
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 通过调用文摘列表API获取文摘
  • ​ArcGIS Pro 如何批量删除字段
  • ​Python 3 新特性:类型注解
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (四)图像的%2线性拉伸
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net mvc总结
  • .net 生成二级域名
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)