以下是引用missiyou在2011-1-15 09:35:29的发言:
类似的问题是很多,我已经找到解决的办法,就是奇偶性的问题。我只要加一句话就行了
bool Is_Mach(char *str1,char *str2)
{
int length1, length2;
length1 = length2 = 0;
if(str1 == NULL || str2 == NULL)
return false;
if(strlen(str1) == strlen(str2))
{
int len = strlen(str1);
//if (str1[len -1] == str2[len -1])
//{
// len = len -1;
// } //这里已经是一个奇偶的一个小判断!但不行
len = len%2==0 ? len + 1 : len; //就这一句就行了
while(*str1 != '\0')
{
if(*str1 != *str2)
{
length2 += *str2 % len;
length1 += *str1 % len;
}
++str1;
++str2;
}
if(length1 == length2)
return true;
}
return false;
}
这样这个方法,就可以解决上面任何类似的问题了
我无语了,你以为这样可以逃避吗???这样下去,你的算法依旧一直不正确,你只是无聊在消耗时间罢了,为什么就不听我说的?类似的问题是很多,我已经找到解决的办法,就是奇偶性的问题。我只要加一句话就行了
bool Is_Mach(char *str1,char *str2)
{
int length1, length2;
length1 = length2 = 0;
if(str1 == NULL || str2 == NULL)
return false;
if(strlen(str1) == strlen(str2))
{
int len = strlen(str1);
//if (str1[len -1] == str2[len -1])
//{
// len = len -1;
// } //这里已经是一个奇偶的一个小判断!但不行
len = len%2==0 ? len + 1 : len; //就这一句就行了
while(*str1 != '\0')
{
if(*str1 != *str2)
{
length2 += *str2 % len;
length1 += *str1 % len;
}
++str1;
++str2;
}
if(length1 == length2)
return true;
}
return false;
}
这样这个方法,就可以解决上面任何类似的问题了
而且你自己还懒得帮自己找反例,这是写程序的应该有的严谨态度吗?
反例拿去 "ACACE", "BBBBJ"
下不为例,请你自重
樱之雪,晓之车