数据结构与算法学习系列第二天

一个问题的解决办法有很多种,所以小编写的算法可能您没有见过或者还有很多欠缺的地方,因为我没看过别人写的算法。现在凭借自己的理解

基础上实现的问题解法。不妥之处多多指教。

问题1:线性表之字符串的删除操作,如字符串A=“abcdef”,删除第二个元素b,得到新的字符串acdef

思路:得到要删除的位置,创建一个新的字符串B,遍历所有元素,判断如果位置为删除的编号,则不加入到B中

图解:数据结构与算法学习系列第二天

 C#代码:

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Text;

 5 

 6 namespace _5线性表之数组删除操作

 7 {

 8     class Program

 9     {

10         static void Main(string[] args)

11         {

12             Console.WriteLine("请输入要删除的字符串");

13             string strA = Console.ReadLine();

14             Console.WriteLine("请输入要删除的位置");

15             int index = int.Parse(Console.ReadLine());

16             string strOutput=DelectString(index-1, strA);

17             Console.WriteLine(strOutput);

18             Console.ReadKey();

19         }

20         public static string DelectString(int index, string strA)

21         {

22             char[] charA = strA.ToCharArray();

23             StringBuilder sb = new StringBuilder();

24             int lengthA=charA.Length;

25             for (int i = 0; i < lengthA; i++)

26             {

27                 if (i < index)

28                 {

29                     sb.Append(charA[i]);

30                 }

31                 if (i > index)

32                 {

33                     sb.Append(charA[i]);

34                 }

35             }

36             return sb.ToString();

37         }

38     }

39 }

题目2:已知字符串strA="3,5,8,11,21",字符串strB="2,6,8,9,15,20" 要求输出一个字符串按递增顺序排列。如2,3,5,6,8,11,15,20,25,

我的思路:首先将两个字符串Split得到两个char数组,charA,charB,以第一个charA为标准,取出第一个元素,遍历charB中的元素,判断:如果charB中存在比第一个元素还小的,则将其排在前头,再取出charA第二个元素依次遍历。

图解:数据结构与算法学习系列第二天

C#实现代码:

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Text;

 5 

 6 namespace _3线性表之两个集合的递增排序

 7 {

 8     class Program

 9     {

10         static void Main(string[] args)

11         {

12             string strA = "3,5,8,11,21";//此算法有个缺陷就是做比较的strA必须有最大值否则strB中的比strA中大的数输出不来

13             string strB = "2,6,8,9,15,20";

14             Console.WriteLine(strA+"\n"+strB);

15             string newStr = rankByIncrease(strA,strB);

16             Console.WriteLine(newStr);

17             Console.ReadKey();

18         }

19         protected static string rankByIncrease(string A, string B)

20         {

21             StringBuilder sb = new StringBuilder();

22             string[] str_A = A.Split(',');

23             string[] str_B = B.Split(',');

24             int lengthA = str_A.Length;

25             int lengthB = str_B.Length;

26             try

27             {

28                 for (int i = 0; i < lengthA; i++)

29                 {

30                     for (int j = 0; j < lengthB; j++)

31                     {

32                         int numberA = int.Parse(str_A[i]);//得到strA中的每一个元素并转换为int类型

33                         int numberB = int.Parse(str_B[j]);//得到strB中的每一个元素并转换为int类型

34                         if (numberA > numberB)

35                         {

36                             if (!sb.ToString().Contains(numberB.ToString()))

37                             {

38                                 sb.Append(numberB.ToString()+",");

39                             }

40                         }

41                     }

42                     sb.Append(str_A[i]+",");

43                 }

44                

45             }

46             catch (Exception ex)

47             {

48 

49                 Console.WriteLine(ex.Message);

50             }

51             return sb.ToString();

52         }

53     }

54 }

 

 

你可能感兴趣的:(数据结构与算法)