一个字符串找查的例子

简介:

题目:

给定一母串和一子串,返回子串的任意排列顺序在母串中首次出现的位置,没有则返回-1。如:母串:qwertyuihgfd,子串:tyui,则输出4

分析:

因为子串是任意组合,子串的组合方式不定,不能从子串下手,只有从母串下手了。计算子串长度,循环从第一位开始截取母串子串长度的子串,然后循环这个字串,查找子串中是否存在母串定长度串中的字符,存在就移除,直到循环结束,子串移空,就表明子串能组合成母串的部分,并记录母串截取位置。


答案:

     static void Main()
        { 
            List<int> list = new List<int>();
            string M = "abcbdedbcbcbbcbbbc";
            string S = "bcb";
            for (int i = 0; i <= M.Length - S.Length; i++)//循环母串
            {
                string temp = M.Substring(i, S.Length);//截取母串
                List<Char> chars = S.ToCharArray().ToList();//转换子串
                for (int j = 0; j < temp.Length; j++)
                {
                    if (chars.Contains(temp[j]))
                    {
                        chars.Remove(temp[j]);//把到相同的字符移出集合
                    }
                    else
                    {
                        break;//有不包含的字符就跳出循环,重新比较下一个字符串
                    }
                    if (j == temp.Length - 1)//利用j循环的次数来判断找到完整的S字符
                    {
                        list.Add(i);
                    }
                }
            }
            foreach (int index in list)
            {
                Console.WriteLine("string is {0}  index:{1}", M.Substring(index, S.Length), index);
            }
        }

 















本文转自桂素伟51CTO博客,原文链接: http://blog.51cto.com/axzxs/697258,如需转载请自行联系原作者


相关文章
|
8月前
|
C#
C#的小例子和字符串(一)
C#的小例子和字符串(一)
150 0
|
8月前
|
C#
C#的小例子和总结(二)
C#的小例子和总结(二)
48 0
|
4月前
|
Ubuntu Shell Linux
9-16|libfaketime例子
9-16|libfaketime例子
|
8月前
02-python的基础语法-标识符/运算符/字符串拓展/字符串的拼接/字符串格式化/字符串精度控制/字符串格式化方式2/对表达式进行格式化/练习题/数据输入-input语句
02-python的基础语法-标识符/运算符/字符串拓展/字符串的拼接/字符串格式化/字符串精度控制/字符串格式化方式2/对表达式进行格式化/练习题/数据输入-input语句
|
Java C++
数组的一些简单例子
当我们使用 arraycopy( ) 方法的时候,我们不但可以将原先的数组拷贝到一个新数组中去,也可以将原先的数组拷贝到原先的数组中。上述这个思想可以应用到数据结构的顺序表中的中间插入操作。
122 0
数组的一些简单例子
|
C语言
​ ​​ ​初识C语言——常量、转义字符、函数、数组的相关概念
史上最全讲解常量、转义字符、函数、数组的相关概念
106 0
给出n,构造含有n个子1337的字符串
给出n,构造含有n个子1337的字符串
74 0
|
索引
刷题 编写一个函数,给出可以转换的不同字符串的个数。
题目: 将给定的数转换为字符串,原则如下:1对应 a,2对应b,…..26对应z,例如12258可以转换为"abbeh", "aveh", "abyh", "lbeh" and "lyh",个数为5,编写一个函数,给出可以转换的不同字符串的个数。
1234 0
|
Java 数据安全/隐私保护 索引
字符串的案例代码
字符串的案例   A:模拟用户登录   B:字符串的遍历   C:统计字符串中大写、小写及数字字符的个数   D:把字符串的首字母转成大写,其他转成小写   E:把int数组拼接成一个指定格式的字符串输出   F:字符串反转   G:统计大串中小串出现的次数 A:模拟用户登录 1 package cn.itcast_03; 2 3 import java.util.Scanner; 4 5 /* 6 * 模拟登录,给三次机会,并提示还有几次。
993 0
|
数据安全/隐私保护