两个字符串比较那种算法比较快问题,如内容

feigmin 2003-09-29 03:42:24
string strA="1100";
string strB="0001";
我想比较这两字符串,并返回strC,条件:strA和StrB中只要某个位置中有一个值是1,那么strC对应位置则为1。如果按我给出的strA和strB应该返回strC="1101".
谢谢
...全文
92 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹君子 2003-09-29
  • 打赏
  • 举报
回复
同意!
Reeezak 2003-09-29
  • 打赏
  • 举报
回复
说错了
是或操作
Reeezak 2003-09-29
  • 打赏
  • 举报
回复
诚心的给你一个楼主一个建议:
这样异或操作不是用汇编就用C,多方便阿?
或者你用VC++.NET写一个控件
在CS里面用就是了
Jinniu 2003-09-29
  • 打赏
  • 举报
回复
做一个!!(按位或)就行了。
xixigongzhu 2003-09-29
  • 打赏
  • 举报
回复
出什么错?
qimini 2003-09-29
  • 打赏
  • 举报
回复
xixigongzhu(夕夕公主) ( )的方法最快,位运算
feigmin 2003-09-29
  • 打赏
  • 举报
回复
xixigongzhu(夕夕公主):strC = Convert.ToString(c, 2);要出错,我试过了。
谢谢各位大侠的支持!!最好能转换成二进制处理
Reeezak 2003-09-29
  • 打赏
  • 举报
回复
MOV EAX,strA(strA代表放置strA的内存地址)
MOV EBX,strB(strB代表放置strA的内存地址)
XOR EAX,EBX
MOV strC,EAX(strC代表放置strA的内存地址)

嘻嘻,MASM32,开个玩笑,大家别扔鸡蛋阿
caozping 2003-09-29
  • 打赏
  • 举报
回复
private string Process(string strA,string strB)
{
string strC;
string strD;
if(strA.Length>strB.Length )
{
strC=strA;
strD=strB;
}
else
{
strC=strB;
strD=strA;
}
int i=0;
while(i<strD.Length)
{
if(strD.Substring(i,1)=="1")
{
strC=strC.Insert(i,"1");
strC=strC.Remove(i+1,1);
}
i++;
}
return strC;
}
xixigongzhu 2003-09-29
  • 打赏
  • 举报
回复
int a = Convert.ToInt32(strA, 2);
int b = Convert.ToInt32(strB, 2);
int c = a | b;
strC = Convert.ToString(c, 2);
triout 2003-09-29
  • 打赏
  • 举报
回复
unsigned BinStrToUINT32(string BinStr)
{
unsigned tmp=0;
int strlen=BinStr.length;
char *chBinStr=chBinStr.ToCharArray();//记不起函数名了,自己检查,转换成字符数组
for(int i=0;i<strlen;i++)
{
tmp*=2;
if(chBinStr[i]=='1')
tmp+=1;
}
return tmp;
}

string UINT32ToBinStr(unsigned uData)
{
string tmp="";
unsigned utmp=uData;
for(int i=0;i<32;i++)
{
tmp+=utmp>0x7fffffff?"1":"0";
utmp<<1;
}
return tmp;
}

比较:
StrC=UINT32ToBinStr(BinStrToUINT32(StrA)|BinStrToUINT32(StrB));

呵呵
Bob 2003-09-29
  • 打赏
  • 举报
回复
如果长度没有固定的话,还是老实点:

using System;
using System.Text;

class TestCompareString
{
public static void Main()
{
Console.WriteLine(StringCompare("1101","0101"));
Console.Read();
}

private static string StringCompare(string strA, string strB)
{
StringBuilder strC = new StringBuilder("");
int len = (strA.Length>strB.Length) ? strA.Length : strB.Length;
for(int i=0; i < len; i++)
{
if(strA[i]=='1' || strB[i]=='1')
strC.Append("1");
else
strC.Append("0");
}
return strC.ToString();
}
}
feigmin 2003-09-29
  • 打赏
  • 举报
回复
strA和strB、srtC中只包含0和1。strA和strB、srtC并且长度都一样。
Bob 2003-09-29
  • 打赏
  • 举报
回复
using System;
using System.Text;

class TestCompareString
{
public static void Main()
{
Console.WriteLine(StringCompare("1101","0101"));
Console.Read();
}

private static string StringCompare(string strA, string strB)
{
StringBuilder strC = new StringBuilder("");
int len = (strA.Length>strB.Length) ? strA.Length : strB.Length;
for(int i=0; i < len; i++)
{
if(strA[i]=='1' || strB[i]=='1')
strC.Append("1");
else
strC.Append("0");
}
return strC.ToString();
}
}
triout 2003-09-29
  • 打赏
  • 举报
回复
找找看,好象有一个能把01串转换成数的,然后使用按位或就简单了。
acewang 2003-09-29
  • 打赏
  • 举报
回复
两个字符串的长度是固定的吗?
jjcccc 2003-09-29
  • 打赏
  • 举报
回复
char[] ca=new char[4];

for (int i=0;i<4;i++)
ca[i]=(strA[i]=='1'||strB[i]=='1')?'1':'0';

string strC=new string(ca);
changezhong 2003-09-29
  • 打赏
  • 举报
回复
就做一个循环来比较好了
jjcccc 2003-09-29
  • 打赏
  • 举报
回复
byte a=Convert.ToByte(strA);
byte b=Convert.ToByte(strB);

byte c=a|b;

string strC=c.ToString("X4");

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧