程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一個字符串找查的例子

一個字符串找查的例子

編輯:關於C語言

 

題目:

 

給定一母串和一子串,返回子串的任意排列順序在母串中首次出現的位置,沒有則返回-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);

            }

        }

 

 

 

 

 

本文出自 “桂素偉” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved