zoukankan      html  css  js  c++  java
  • 数据结构与算法学习系列第二天

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

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

    问题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 }
  • 相关阅读:
    SpringMVC学习指南【笔记6】JSTL标签、函数
    SpringMVC学习指南【笔记5】EL表达式、实现免脚本JSP页面、禁用EL计算的设置
    SpringMVC学习指南【笔记4】数据绑定、表单标签库、转换器、格式化、验证器
    序列封包和序列解包
    python 字符串分割,连接方法
    Jmeter常用插件(转)
    不同的content-type,Jmeter入参不同
    性能监测(CPU)
    正则表达式
    乱码问题
  • 原文地址:https://www.cnblogs.com/luodao1991/p/2999735.html
Copyright © 2011-2022 走看看