如何判断多个变量值不相同

xrqmzl 2009-08-18 09:45:04
有8个变量分别是 jt3 jt4 jt5 jt6 jt7 jt8 jt9 jt10 里面存放的都是两位的数字字符串,如 13 05 24等。。 如何判断这8个变量的值不相同呢? 不要用equals的两两比较,有没有一个简单的算法。。可以比较任意多个变量的值是没有重复??




...全文
282 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigc2000 2009-08-22
  • 打赏
  • 举报
回复
所有值取XOR,看结果
destinyac 2009-08-21
  • 打赏
  • 举报
回复
建立一张表,然后设置主键。然后insert.
donkey301 2009-08-20
  • 打赏
  • 举报
回复
放到stl的list里,然后用list的unique就可以判断是不是有重复的了
linren 2009-08-20
  • 打赏
  • 举报
回复
上面忘记把调试时的打印信息去掉了……
下面是正确的程序:
public class Test{
public static void main(String args[]){
int i,j;
String[] jt={"13","05","45","24","89","23","09","05"};
for(j=7;j>=0;j--){
for(i=0;i<j;i++){
if(jt[i].equals(jt[j])){
System.out.println("repeat!");return;
}
}
}
System.out.println("single!");
}
}
linren 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xrqmzl 的回复:]
12楼的你能用java代码来实现下吗??因为 java不是以'\0'结尾的。。
[/Quote]
【程序】
public class Test{
public static void main(String args[]){
int i,j;
String[] jt={"13","05","45","24","89","23","09","05"};
for(j=7;j>=0;j--){
for(i=0;i<j;i++){
if(jt[i].equals(jt[j])){
System.out.println("repeat!");return;
}
}System.out.println();
}
System.out.println("single!");
}
}

【运行结果】
E:\JAVA>javac Test.java

E:\JAVA>java Test
repeat!

E:\JAVA>

【说明】
JAVA下可以使用String的equals方法来判断两个String的内容是否相等……
xrqmzl 2009-08-20
  • 打赏
  • 举报
回复
12楼的你能用java代码来实现下吗??因为 java不是以'\0'结尾的。。
linren 2009-08-20
  • 打赏
  • 举报
回复
忘记JAVA数组长度是可以查看length成员的变量了……
public class Test{
public static void main(String args[]){
int i,j;
String[] jt={"13","05","45","24","89","23","09","05"};
for(j=jt.length-1;j>=0;j--){
for(i=0;i<j;i++){
if(jt[i].equals(jt[j])){
System.out.println("repeat!");return;
}
}
}
System.out.println("single!");
}
}
xrqmzl 2009-08-18
  • 打赏
  • 举报
回复
5楼的意思我大概明白了,能不能帮我举个例子,写一段小代码示范下。。譬如说就拿我那几个变量举个例子
w11x22b33 2009-08-18
  • 打赏
  • 举报
回复
写个简单对象只有一个属性,再把这个对象压到TreeSet ,再得到TreeSet.size(),如果重复TreeSet.size()数值比你压得数值少。
xrqmzl 2009-08-18
  • 打赏
  • 举报
回复
我只是觉得用equals两辆比较的话写出来那个if语句太长了。。。有没有一个现成的函数什么的。呵呵、、不过话说回来,自己也可以写个调用下就可以了。。
绿色夹克衫 2009-08-18
  • 打赏
  • 举报
回复
用Hash或排序都可以,不过才8个数,效率提高有限。
xrqmzl 2009-08-18
  • 打赏
  • 举报
回复
你说的对啊,看来我也只能两两比较了。。。
wuyi8808 2009-08-18
  • 打赏
  • 举报
回复
只能两两比较。

先排序的话,可以只比较相邻项。但排序本身就已经用到两两比较了。
linren 2009-08-18
  • 打赏
  • 举报
回复
(上接11楼)
【说明】
从n个数中选两个数……
比较次数为:n*(n-1)/2
linren 2009-08-18
  • 打赏
  • 举报
回复
【程序】
#include <stdio.h>
#include <string.h>
/**只用修改这里******************/
#define SIZE 8
#define STRINGLEN 3
char jt[SIZE][STRINGLEN]={"13","05","45","24","89","23","09","06"};
/******************只用修改这里**/

int fun(char *a,int len,int slen){
int i,j;
for(j=len-1;j>0;j--){
for(i=0;i<j;i++) if(strcmp((a+slen*i),(a+slen*j))==0) return 1;
}
return 0;
}

int main(){
if(fun(&jt[0][0],SIZE,STRINGLEN)) printf("repeat!\n");
else printf("single!\n");
return 0;
}

【说明】
STRINGLEN为3的原因是字符串是以'\0'结尾的……
linren 2009-08-18
  • 打赏
  • 举报
回复
【程序】
#include <stdio.h>
#include <string.h>
#define SIZE 8
char jt[SIZE][3]={"13","05","45","24","89","23","09","05"};

int fun(char *a,int len){
int i,j=len-1;
for(j=len-1;j>=0;j--){
for(i=0;i<j;i++) if(strcmp((a+3*i),(a+3*j))==0) return 1;
}
return 0;
}

int main(){
if(fun(&jt[0][0],SIZE)) printf("repeat!\n");
else printf("single!\n");
return 0;
}
编程农场 2009-08-18
  • 打赏
  • 举报
回复
采用我开发的数据结构的SDK即可实现:
请参考:http://topic.csdn.net/u/20090818/15/73cfd34b-cdfd-4e5f-9cf2-e069137cce43.html?
61140

步骤
1、先把字符串插入到有序HASH树中(相同的值只生成一个节点)
2、获取HASH树中的节点的数量
3、如果HASH树中节点的数量 != 插入变量的数量,则这些多个变量有相同的
如果 = = ,则说明这些变量都不相同。

e-mail:freeland007@163.com
QQ: 723273055
fatiezhe 2009-08-18
  • 打赏
  • 举报
回复
既然都是二位数,那就用一个10*10的二维数组做统计呗,能到O(n)
gbb21 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyi8808 的回复:]
只能两两比较。

先排序的话,可以只比较相邻项。但排序本身就已经用到两两比较了。
[/Quote]
两两比较是O(N2)的,排序是O(NLogN)的,排序怎么可能是两两比较呢?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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