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(); } }