UVA Ananagrams 这题水的一逼,欢迎使用Java

原题见

:::::::::::链接在Vjudge因为UVA好像访问不了:::::::::::

<________________________________思路分析______________________________>

这是一堆字符串,那么只要用Java强大的字符串处理功能就可以轻松解决

/*遇到大数类啊字符串啊可以先考虑考虑Java能不能做*/

首先java可以吧输入的字符串直接copy一个新的出来

然后我们对新字符串进行转小写和toCharArray()操作并把这个char[]进行排序

用一个字符串记录处理后不同的字符串,每个子字符串前后记得加上“ ”方便之后查找

这样只有查到有的就不再加入s字符串,并且删去原有List中的相同字符串

如果没有就加进去

执行如上操作后

还要注意最后输出是要排序的

再利用Collections类的sort()方法即可实现排序

for each 比起c++的迭代器美滋滋

这样就完成了所有操作

<___________________这是一串没有注释的代码_________________>

import java.util.*;

public class Main{
	static LinkedList<String> a=new LinkedList<String>();
	static LinkedList<String> b=new LinkedList<String>();
	static void remove(String m,String x){
		for(int i=a.size()-1;i>=0;i--) {
			if(a.get(i).equals(m)) {
				a.remove(i);
				b.remove(i);
				return;
			}
		}
	}
	public static void main(String args[]) {
		Scanner in=new Scanner(System.in);
		String s="";
		while(in.hasNext()) {
			String x=in.next();
			if(x.equals("#"))break;
			char r[]=x.toLowerCase().toCharArray();
			Arrays.sort(r);
			String m=" ";
			for(char i:r)m+=i;
			m+=" ";
			if(s.contains(m)) {
				remove(m,x);
			}else {
				a.add(m);
				b.add(x);
				s=s+m;
			}
		}
		Collections.sort(b);
		for(String q:b) {
			System.out.println(q);
		}
		in.close();
	}
}



posted @ 2017-12-26 19:19  可爱如我  阅读(178)  评论(0编辑  收藏  举报