C#中怎么判断2个字符串有多少个字符是相同的
4个回答
2013-08-24
展开全部
#region 两字符串中有几个相同字符
/// <summary>
/// 两字符串中有几个相同字符
/// </summary>
/// <param name="fir">第一个字符串</param>
/// <param name="sec">第二个字符串</param>
/// <returns></returns>
public int Same(string fir, string sec)
{
int same = -1;
int flag = sec.Length;
StringBuilder sbfir = new StringBuilder();
StringBuilder sbsec = new StringBuilder();
sbfir.Append(fir);
sbsec.Append(sec);
try
{
while (flag > 0)
{
flag--;
for (int i = 0; i < sbfir.Length; i++)
{
for (int j = 0; j < sbsec.Length; j++)
{
if (sbfir[i] == sbsec[j])
{
same++;
sbsec.Remove(j, 1);
sbfir.Remove(i, 1);
i--;
break;
}
}
}
}
}
catch (Exception) { }
return same;
}
#endregion
如果“1231” 和“12”比较,返回是2,也就是说一个字符串中还有相同的,视为相同!有问题,追问
/// <summary>
/// 两字符串中有几个相同字符
/// </summary>
/// <param name="fir">第一个字符串</param>
/// <param name="sec">第二个字符串</param>
/// <returns></returns>
public int Same(string fir, string sec)
{
int same = -1;
int flag = sec.Length;
StringBuilder sbfir = new StringBuilder();
StringBuilder sbsec = new StringBuilder();
sbfir.Append(fir);
sbsec.Append(sec);
try
{
while (flag > 0)
{
flag--;
for (int i = 0; i < sbfir.Length; i++)
{
for (int j = 0; j < sbsec.Length; j++)
{
if (sbfir[i] == sbsec[j])
{
same++;
sbsec.Remove(j, 1);
sbfir.Remove(i, 1);
i--;
break;
}
}
}
}
}
catch (Exception) { }
return same;
}
#endregion
如果“1231” 和“12”比较,返回是2,也就是说一个字符串中还有相同的,视为相同!有问题,追问
2013-08-24
展开全部
#include<iostream>
#include<string>
using namespace std;
//算法可放入C#,我用c++调试的。
int findsame(string a,string b)
{
int i,j,t;
int s;
int *visit=new int [b.size()];
///c#的话,把上面改成int []visit=new int [b.size()];
for(i=0;i<b.size();i++) visit[i]=0;//防止1个字符对应二个字符。
s=0;
for(i=0;i<a.size();i++)
{
t=0;
for(j=0;j<b.size();j++)
{
if(visit[i]==0&&a[i]==b[j]) {visit[i]=1;t=1;break;}
}
if(t) s++;
}
return s;
}
int main()
{
string a,b;
cin>>a>>b;
cout<<findsame(a,b)<<endl;
return 0;
}
#include<string>
using namespace std;
//算法可放入C#,我用c++调试的。
int findsame(string a,string b)
{
int i,j,t;
int s;
int *visit=new int [b.size()];
///c#的话,把上面改成int []visit=new int [b.size()];
for(i=0;i<b.size();i++) visit[i]=0;//防止1个字符对应二个字符。
s=0;
for(i=0;i<a.size();i++)
{
t=0;
for(j=0;j<b.size();j++)
{
if(visit[i]==0&&a[i]==b[j]) {visit[i]=1;t=1;break;}
}
if(t) s++;
}
return s;
}
int main()
{
string a,b;
cin>>a>>b;
cout<<findsame(a,b)<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-24
展开全部
Char[] char1=System.Text.Encoding.Default.GetChars(string1的名字);
Char[] char2=System.Text.Encoding.Default.GetChars(string2的名字);
循环记数有多少相同的就行了。
Char[] char2=System.Text.Encoding.Default.GetChars(string2的名字);
循环记数有多少相同的就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-24
展开全部
是位置和字符都相同还是只要字符相同呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询