第1个回答 2010-04-20
package Test1;
import java.util.HashSet;
import java.util.Set;
public class strlength {
public static void main(String[] args) {
String str = "rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgyrbgbyrgbyrgbrygbyrgbyrgbryygrbygrbygrbygrbybgrybgrbrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrygrbygrbygrbygrbybgrybgr";
int n = str.length() / 4;
String[] s = new String[n];
System.out.println("共有" + n + "项");
for (int i = 0; i < n; i++) {
s[i] = str.substring(4 * i, 4 * i + 4);
}
Set<String> set = new HashSet<String>();
for(int j= 0;j<s.length;j++){
set.add(s[j]);
}
System.out.println("其中"+set.size()+"项不重复");
System.out.println(set);
}
}
第2个回答 2010-04-20
package baidu;
import java.util.HashSet;
import java.util.Set;
/*
* String str ="rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgy
rbgbyrgbyrgbrygbyrgbyrgbryygrbygrbygrbygrbybgrybgrbrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrygrbygrby
grbygrbybgrybgr";给定的字符串是上面这个,要求按每4个字母为一项进行比较,去掉重复项,并计算不重
复项有多少个,打印出不重复项(不用换行),有高手请给出个答案来吧,小弟不胜感激
*/
public class TestStr {
public static void main(String args[]){
String str ="rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgyrbgbyrgbyrgbrygbyrgbyrgbryygrbygrbygrbygrbybgrybgrbrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrygrbygrbygrbygrbybgrybgr";
//按说这里应该判断一下,但是下面也要判断比较麻烦,因为正好str长184可分为46个字符串。所以在此图省力不写了
/* if(str.length()%4==0){
String arr[]=new String[str.length()/4];
}else{
String[] arr=new String[(str.length()/4)+1];
}*/
//初始化一个字符串数组 为46长度的 用来存放分割后的 字符串
String[] arr=new String[str.length()/4];
//给字符串数组赋值
for(int i=0;i<str.length();i=i+4){
arr[i/4]=str.substring(i,i+4);
}
//由于 set集合不允许存放重复的元素 所以可以直接把 数组元素放进set 自动去除重复元素(这里投机了 没写算法)
Set<String> set=new HashSet<String>();
for(String s:arr){
set.add(s);
}
System.out.println("不重复项的个数是:"+set.size());
System.out.print("不重复元素为");
for(String s:set){
System.out.print(":"+s);
}
}
}
运行结果:
不重复项的个数是:14
不重复元素为:rgyb:brgy:rgby:bgry:ybgr:grby:bygr:ygrb:gbry:bgyr:gryb:gyrb:gbyr:rbgy
我不知道你的意思 是重复元素全部去掉 还是 把重复的元素只留一个其他去掉。希望这个是正确的。