String compare

M

Muhs

Hi !!
i want to compare two strings and return the difference

For example, i have two strings,
string str1="then";
string str2="than";

it compared the two strings and returns 1, as only one character is
different (a and e).
Is there a function in c# that can do this??
 
J

Jon Skeet [C# MVP]

Muhs said:
i want to compare two strings and return the difference

For example, i have two strings,
string str1="then";
string str2="than";

it compared the two strings and returns 1, as only one character is
different (a and e).
Is there a function in c# that can do this??

I don't think there's anything built into .NET to do that. It's a
relatively tricky business. For instance, your example was simple - but
what about:

"Foo is good"
"Food is good"

*We* can see that you just need to add the "d" to the first line, but a
character-by-character analysis would show everything after "Foo" as
being different.
 
R

rossum

Hi !!
i want to compare two strings and return the difference

For example, i have two strings,
string str1="then";
string str2="than";

it compared the two strings and returns 1, as only one character is
different (a and e).
Is there a function in c# that can do this??
Have a look at the Levenshtein Distance measure,
http://en.wikipedia.org/wiki/Levenshtein_distance which may be what
you are looking for. As far as I am aware it is not in .NET, though
it is possible there is a C# version of the algorithm out there
somewhere.

rossum
 
M

Martin Bonner

Hi !!
i want to compare two strings and return the difference

For example, i have two strings,
string str1="then";
string str2="than";

it compared the two strings and returns 1, as only one character is
different (a and e).
Is there a function in c# that can do this??

I don't think so.

This is quite easy, so I suspect it is homework. You won't learn if
you get somebody else to write the code for you. If you have written
some code and are having trouble, then post it with a description of
the problem and we can probably help.

If it is not homework, then what is the application? (I can think of
a number of issues with the specification as it stands, and the
resolution will depend on the application.)
 
M

Muhs

lol.. i know what u mean by being it a homework... its not exactly a
homework..
its my degree project which i'll be working on till september... and
ive just stated.. My project is about mutation clustering...the data
that i have is in the form of 1's and 0's
(10001010101010101010000011... could be int or string). And i have to
cluster them based on the hamming distance...
I was just thinking of ways to compare and cluster the data... (i
thought i could compare the each string and getthe number of different
bits)
or i can XOR each int and find the distance...
somebody in the reply above sent a link... and i found this hamming
distance algo:

int dist = 0;
int val = 0;
int x= 8;
int y=15;
val = x ^ y; // this will be equal to 7

while(val!=0)
{
++dist;
val = val - 1;
}

but this
 
M

Muhs

int distance = 0;
int val = 0;
int x= 8;
int y=15;
val = x ^ y;

while(val!=0)
{
++distance;
val = val - 1;
}



but the distance that i get is 7, same as val... i was thinking of
converting 7 to binary and count the number of 1's (111) that way i
could get distance 3..
 
M

Muhs

lol.. i know what you mean by being it a homework... actually its my
final year degree project.. on which i'll be working on till
sepetember... my project is about mutation clustering... and i have
data in the form of 1's and 0's(data= 101010000011000001, could be int
or string)... now i want to cluster the data based on some similarity
measure.... i thought i could compare the string data and find the
number of characters that are different... but somebody above sent a
link and there was this algo of hamming distance... i wrote the algo
as follows:

int distance = 0;
int val = 0;
int x= 8;
int y=15;
val = x ^ y;

while(val!=0)
{
++distance;
val = val - 1;
}


but the distance that i get is 7, same as val... i was thinking of
converting 7 to binary and count the number of 1's (111) that way i
could get distance 3..
 
M

Martin Bonner

lol.. i know what you mean by being it a homework... actually its my
final year degree project.. on which i'll be working on till
sepetember... my project is about mutation clustering... and i have
data in the form of 1's and 0's(data= 101010000011000001, could be int
or string)... now i want to cluster the data based on some similarity
measure.... i thought i could compare the string data and find the
number of characters that are different... but somebody above sent a
link and there was this algo of hamming distance... i wrote the algo
as follows:

int distance = 0;
int val = 0;
int x= 8;
int y=15;
val = x ^ y;

while(val!=0)
{
++distance;
val = val - 1;
}
but the distance that i get is 7, same as val... i was thinking of
converting 7 to binary and count the number of 1's (111) that way i
could get distance 3..

Well yes. As currently coded, the while loop is equivalent to:
distance = val;
val = 0;
(... provided x,y are constrainted to be >= 0). Go look at the
wikipedia page again, and code the updated correctly, and it will
indeed count the bits.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top