文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>求最大公约数---字符串并集---交集代码小结

求最大公约数---字符串并集---交集代码小结

时间:2011-03-23  来源:happygx

一:求最大公约数

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace maxnumwhen
{
public class Program
{
public static void Main(string[] args)
{

Console.WriteLine(
"请输入第一个字符");
int input1 =Convert.ToInt32( Console.ReadLine());
Console.WriteLine(
"请输入第二个字符串");
int input2 =Convert.ToInt32( Console.ReadLine());



int[] gcds;
try
{
TryGcd(input1, input2,
out gcds);

Console.WriteLine(
"共约数");
foreach (int i in gcds)
{
Console.WriteLine(i);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();


}

private static void TryGcd(int x, int y, out int[] gcds)
{
gcds
= null;
int tint = 0;
int num1, num2;

num1
= x;
num2
= y;

ArrayList arr1
= new ArrayList();
ArrayList outArr
= null;
//如果x>y
if (x > y)
{
num1
= y;
num2
= x;
}
//先算小的
for (int i = 1; i <= num1; i++)
{

tint
= num1 % i;
if (tint == 0)
{
arr1.Add(i);
}
}
//如果 两个数不同
if (num1 != num2)
{
outArr
= new ArrayList();

for (int i = 1; i <= num2 && i <= num1; i++)
{

tint
= num2 % i;
if (tint == 0)
{
//如果
if (arr1.IndexOf(i) != -1)
{
outArr.Add(i);
}
}
}
}
else
{
outArr
= arr1;
}
if (outArr.Count > 0)
{
gcds
= new int[outArr.Count];
outArr.CopyTo(gcds);
}

}

}

}

二:去交集,并集

假设有两个字符串,str1,str2,

取并集的思想是先定位str1,遍历str2

str1中的字符时事实存在的,所以只需遍历判断str2中的值是否在收入1中包含,如果str2中的值包含在str1中,则将这个字符加到空的字符变量s上,即s是求出的交集

如果str2中的值不包含在str1中,则将不包含的字符串加到str1后面,即str1的返回值就是并集

具体代码实现如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace CompareString
{
class Program
{
static void Main(string[] args)
{
string str1 = Console.ReadLine();
string str2 = Console.ReadLine();
Console.WriteLine(CompareString(str1, str2));
//Console.WriteLine(CompareStr1(str1,str2)); //方法一:for包含
Console.ReadKey();
}
/// <summary>
///(空间和空间 1998年08月11日中国华人民共和国主席令第十次会议通过,1999年9月8日现予发布实施,2003年7月9日于中华人民共和国国务院常务会议修订通过,1999年9月8日现予发布实施, )
/// </summary>
/// 方法一:通过for来遍历(不管交集还是并集str1的值都是存在的所以只需遍历str2中的值即可)
private static string CompareStr1(string str1, string str2)
{
string str3 = ""; ;
foreach (char s1 in str2)
{
//并集
if (!str1.Contains(s1))
{
str1
= str1 + s1; //如果str1不包含str2的每个字符的话就将不包含的字符加到str1后面
}
//求交集
else
{
str3
= str3 + s1; //如果str1包含str2的每个字符的话则将str2的元素加到str3上
}
}
return str3;
}

//方法二:正则匹配
private static string CompareString(string str1, string str2)
{
if (!Regex.IsMatch(str1, str2)) //如果str1中含有str2中不存在的值
{
//abc bcde

string mt = "";


string s = "";
foreach (char ch in str2)
{
string temp = ch.ToString();
mt
= Regex.Match(str1, temp).ToString(); //用正则表达式判断str2中的值师傅包含在str1中,如果包含则取出来
if (mt.Length > 0) //如果有str1中有的值,则加到s中去,即取交集
{
s
= s + mt;
}
//将str1中没有的值加到str1中去
else
{
str1
= str1 + temp;

}
}
return str1;
}
return "";
}
}
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载