博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个字符串找查的例子
阅读量:6282 次
发布时间:2019-06-22

本文共 882 字,大约阅读时间需要 2 分钟。

题目:

给定一母串和一子串,返回子串的任意排列顺序在母串中首次出现的位置,没有则返回-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,如需转载请自行联系原作者

你可能感兴趣的文章
servlet流(转摘)
查看>>
Android 连接 SQL Server (jtds方式)——上
查看>>
折射向量计算(Refraction Vector Calculation)
查看>>
常见的压缩文件格式案例tarZ
查看>>
QT环境下实现UI界面的“拼图游戏”
查看>>
WIN7 64位操作系统 无法找到Access驱动
查看>>
怎样解题
查看>>
HDU - 4901 The Romantic Hero(dp)
查看>>
LightOJ - 1246 Colorful Board(DP+组合数)
查看>>
sqlserver distribution分发alwayson搭建
查看>>
力扣算法题—055跳跃游戏
查看>>
Nginx服务安装指南
查看>>
layer遮罩层 简单的遮罩层
查看>>
vue中使用腾讯云Im
查看>>
java FTP上传文件
查看>>
ubuntu 安装 eslint
查看>>
【转】围观 Joomla, Wordpress 和 Drupal
查看>>
用JS做关灯游戏(初级)
查看>>
vue.js学习 自定义过滤器使用(2)
查看>>
laravel资源
查看>>