java中一个字符串数组如何去掉指定位数的重复项并计算不重复项有多少个

Stringstr="rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgy... String str ="rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgyrbgbyrgbyrgbrygbyrgbyrgbryygrbygrbygrbygrbybgrybgrbrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrygrbygrbygrbygrbybgrybgr";
给定的字符串是上面这个,要求按每4个字母为一项进行比较,去掉重复项,并计算不重复项有多少个,打印出不重复项(不用换行),有高手请给出个答案来吧,小弟不胜感激
展开
 我来答
静锋2019
2010-04-20 · TA获得超过196个赞
知道答主
回答量:53
采纳率:100%
帮助的人:44.5万
展开全部
package test;

public class Test {

public static void main(String[] args) {//定义你的字符串
String str="rgybrgbyrgybrbgyrbgybrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrgrybgrbygrybgyrbgyrbgbyrgbyrgbrygbyrgbyrgbryygrbygrbygrbygrbybgrybgrbrgybgyrbgyrbgrybgyrbgyrbgrybygrbygrygrbygrbygrbygrbybgrybgr";
String num[]=new String[str.length()/4+1];//定义一个数组,数组长度为 4个字母的个数
for(int i=0;i<num.length;i++){
num[i]=str.substring(i*4, (i+1)*4>str.length()?str.length():(i+1)*4);//将四个字母一组放入数组中
}
//开始比较数组内容是否有一致的
int sum=0;//计算有多少俱不同的
for(int i=0;i<num.length;i++){
boolean is=true;//比较原理:将其中的一个数和其它任意一个数进行比较
for(int j=i+1;j<num.length;j++){
if(num[i].equals(num[j])){
is=false;//如果相同了,就直接断掉循环,进行下一次的比较
break;
}
}
if(is){//只有和任意一个数都不相同才记录下来
sum++;
System.out.print(num[i]+" ");
}
}
System.out.println(" 共有"+sum+"个。");
}
}

//程序已经写好,可以成功运行,你试一下
zhouxin515
2010-04-20 · TA获得超过108个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:119万
展开全部
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);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
realgood99
2010-04-20 · 超过26用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:61.7万
展开全部
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

我不知道你的意思 是重复元素全部去掉 还是 把重复的元素只留一个其他去掉。希望这个是正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-04-20
展开全部
貌似是 14个吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式