您的位置:首页 > 理论基础 > 数据结构算法

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

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

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

问题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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: