给定一个字符串A,要求在A中查找一个子串B。如A=”ABCDF”,要你在A中查找子串B=“CD”。
思路为遍历主串,用主串的当前元素和子串中的元素进行比较,相符,继续逐个比较,直到最终比较个数等于子串长度,则可认为找到了子串在主串中第一次出现的位置索引。
算法如下:
/// <summary> /// 给定一个字符串A,要求在A中查找一个子串B。 /// 如A=”ABCDF”,要你在A中查找子串B=“CD”。 /// </summary> /// <param name=”str”>主串</param> /// <param name=”strSub”>子串</param> /// <returns>索引位置</returns> int Test(string[] str, string[] strSub) { if (str == null || strSub == null) return -1; int lenStr = str.Length; int lenSub = strSub.Length; int len = lenStr – lenSub + 1; if (lenStr < lenSub) return -1; for (int i = 0; i < len; i++) { int j = 0; for (; j < lenSub; j++) { if (str[i + j] != strSub[j]) break; } if (j == lenSub) return i + 1; } return -1; }
算法清晰、简洁。
结束。