数据结构与算法学习系列第二天
2013-04-04 19:38
453 查看
一个问题的解决办法有很多种,所以小编写的算法可能您没有见过或者还有很多欠缺的地方,因为我没看过别人写的算法。现在凭借自己的理解
基础上实现的问题解法。不妥之处多多指教。
问题1:线性表之字符串的删除操作,如字符串A=“abcdef”,删除第二个元素b,得到新的字符串acdef
思路:得到要删除的位置,创建一个新的字符串B,遍历所有元素,判断如果位置为删除的编号,则不加入到B中
图解:
C#代码:
题目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:线性表之字符串的删除操作,如字符串A=“abcdef”,删除第二个元素b,得到新的字符串acdef
思路:得到要删除的位置,创建一个新的字符串B,遍历所有元素,判断如果位置为删除的编号,则不加入到B中
图解:
C#代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _5线性表之数组删除操作 { class Program { static void Main(string[] args) { Console.WriteLine("请输入要删除的字符串"); string strA = Console.ReadLine(); Console.WriteLine("请输入要删除的位置"); int index = int.Parse(Console.ReadLine()); string strOutput=DelectString(index-1, strA); Console.WriteLine(strOutput); Console.ReadKey(); } public static string DelectString(int index, string strA) { char[] charA = strA.ToCharArray(); StringBuilder sb = new StringBuilder(); int lengthA=charA.Length; for (int i = 0; i < lengthA; i++) { if (i < index) { sb.Append(charA[i]); } if (i > index) { sb.Append(charA[i]); } } return sb.ToString(); } } }
题目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#实现代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _3线性表之两个集合的递增排序 { class Program { static void Main(string[] args) { string strA = "3,5,8,11,21";//此算法有个缺陷就是做比较的strA必须有最大值否则strB中的比strA中大的数输出不来 string strB = "2,6,8,9,15,20"; Console.WriteLine(strA+"\n"+strB); string newStr = rankByIncrease(strA,strB); Console.WriteLine(newStr); Console.ReadKey(); } protected static string rankByIncrease(string A, string B) { StringBuilder sb = new StringBuilder(); string[] str_A = A.Split(','); string[] str_B = B.Split(','); int lengthA = str_A.Length; int lengthB = str_B.Length; try { for (int i = 0; i < lengthA; i++) { for (int j = 0; j < lengthB; j++) { int numberA = int.Parse(str_A[i]);//得到strA中的每一个元素并转换为int类型 int numberB = int.Parse(str_B[j]);//得到strB中的每一个元素并转换为int类型 if (numberA > numberB) { if (!sb.ToString().Contains(numberB.ToString())) { sb.Append(numberB.ToString()+","); } } } sb.Append(str_A[i]+","); } } catch (Exception ex) { Console.WriteLine(ex.Message); } return sb.ToString(); } } }
相关文章推荐
- 数据结构与算法系列----学习数据结构与算法前你需要知道的
- 数据结构与算法学习系列第一天
- Django学习系列—第二天
- osgi 学习系列(七)osgi数据库c3p0连接池
- Qt学习之系列[9] – QCoreApplication:processEvents()可能会引起递归,导致栈溢出崩溃
- 系统学习java高并发系列二
- JSP学习第二天--PPT演示
- MSSql Server基础学习系列———数据删除
- Android系列学习:JSON解析
- 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)
- Flex学习第二天
- ios开发学习--列表(Table)效果源码分享--系列教程1
- Google C++测试框架系列高级篇:第二章 让GTest学习打印自定义对象
- Gradle学习系列之八——构建多个Project
- SpringMVC 学习系列 (10) 之 异常处理
- 【Solr4.7.0学习笔记】系列之一:Facet分组查询
- PHP学习系列(1)——字符串处理函数(1)
- javaweb 学习系列【转】
- Android学习第二天
- hibernate 学习第二天