工作需要 求大家帮忙写个程序我是学C++的 不懂JAVA编写一个Java应用程序,对于给定的一个字符串的集合,格式如:
{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}
要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出:
{aaa bbb ccc ddd hhh},{eee fff}, {ggg}
分析问题,描述你解决这个问题的思路、处理流程,以及算法复杂度。
编程实现题目要求的集合合并。
{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}
要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出:
{aaa bbb ccc ddd hhh},{eee fff}, {ggg}
分析问题,描述你解决这个问题的思路、处理流程,以及算法复杂度。
编程实现题目要求的集合合并。
解决方案 »
- 关于“请用移位的方式打印出一个十进制整数的十六进制形式”的问题。
- 网络爬虫
- java中的Paint(Graphics g)用画笔画出来的图不能完全显示在JFrame中?
- myeclipse数据库连接出现问题
- 着急啊!怎么用JAVA随机生成一组彩票号码
- 有偿转让Java即时通信工具源程序及设计文档
- 大家认为这段代码输出什么呢 ??
- 请帮我看看这段程序那里错了.多谢了!
- 如何用java实现无限时间但间隔是5秒的循环程序,并可用q键退出循环和程序
- Linux 系统 有配置环境,Java、javac命令可以访问,jstack等其他命令无法直接访问
- SWT的聊天多线程问题 求求大家了 三天了都没改出来
- 求教几个简单的java小程序
真心求助
package StringJiao;import java.util.ArrayList;
import java.util.List;public class Str {
private List<String> list;
private String str;
public Str(List<String> list,String str) {
this.list = new ArrayList<String>();
String[] s=str.split(" ");
for(String ss:s){
this.list.add(ss);
}
}
public List<String> getList() {
return list;
} public void setList(List<String> list) {
this.list = list;
} public String getStr() {
return str;
} public void setStr(String str) {
this.str = str;
}
}
package StringJiao;import java.util.ArrayList;
import java.util.List;public class Test { /**编写一个Java应用程序,对于给定的一个字符串的集合,格式如:
{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}
要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出:
{aaa bbb ccc ddd hhh},{eee fff}, {ggg}
* @param args
*/
private static List<Str> strs;
private static String[] arr;
private static int beg=-1; //通过判断beg做为数组的开始长度
private static int end=0; //end运行一次work()end长度。
private static boolean flag=true;
public static void main(String[] args) {
arr=new String[]{"{aaa bbb ccc}","{bbb ddd}","{eee fff}","{ggg}","{ddd hhh fff}"};
while(flag){
work();
}
}
public static void work(){
strs=new ArrayList<Str>();
beg=arr.length;
for(int i=0;i<arr.length;i++){
String str=arr[i];
String str1=fenli(str); //将字符串中的"{"和"}"去掉
List<String> list=null;
strs.add(new Str(list,str1)); //把arr中每个string加到一个集合里面
}
for(int j=0;j<strs.size();j++){
Str aStr=strs.get(j);
for(int k=j+1;k<strs.size();k++){
Str bStr=strs.get(k);
if (isChongdie(aStr, bStr)) {
FindOutNOChongdieString(aStr, bStr);
strs.remove(bStr);
}
}
}
String aString="";
for(int i=0;i<strs.size();i++){ //最后答案输出
Str sss=strs.get(i);
aString+="\"{";
for(int m=0;m<sss.getList().size();m++){
aString+=sss.getList().get(m);
if (m!=sss.getList().size()-1) {
aString+=" ";
}
}
aString+="}\"";
if (i!=strs.size()-1) {
aString+=",";
}
}
String[] array=aString.split(",");
for(int i=0;i<array.length;i++){
arr[i]=array[i]; //重新给arr赋值
}
end=array.length;
if (beg!=end) {
arr=array;
}else if(beg==end){ //如果数组长度不变说明,已经是最后的答案了
flag=false;
System.out.println(aString);
}
}
public static String fenli(String str){ //将字符串中的"{"和"}"去掉
int begin=str.indexOf("{");
int end=str.indexOf("}");
return str.substring(begin+1,end);
}
public static boolean isChongdie(Str str1,Str str2){ //判断arr 是否有相同的元素 例如"{aaa,bbb}" "{bbb,ccc}"有相同
for(int i=0;i<str1.getList().size();i++){
String t1=str1.getList().get(i);
for(int j=0;j<str2.getList().size();j++){
String t2=str2.getList().get(j);
if (t1.equals(t2)) {
return true;
}
}
}
return false;
}
public static void FindOutNOChongdieString(Str str1,Str str2){
String string="";
for(int i=0;i<str1.getList().size();i++){
String t1=str1.getList().get(i);
for(int j=0;j<str2.getList().size();j++){
String t2=str2.getList().get(j);
if (t1.equals(t2)) {
str2.getList().remove(t1); //根据相同元素将str2对应的元素删除
}
}
}
for(int k=0;k<str2.getList().size();k++)
{
str1.getList().add(str2.getList().get(k)); //将str2中不相同的元素加到str1里
}
}
}