记录一个机考题目,筛选字符串0-9a-zA-Z,用hashset对字符串去重,并且保证顺序(数组)
import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); LinkedList<String> correct = new LinkedList<>(); LinkedList<String> error = new LinkedList<>(); while(sc.hasNextLine()) { String line = sc.nextLine(); line = line.trim(); if(line.length() >= 1) { //有字符串 //检测有其他字符 int test = 0; // for (int i = 0; i < line.length(); i++) { // char c = line.charAt(i); // if((c>='0'&c<='9')|(c>='a'&c<='z')|(c>='A'&c<='Z')) { // test = test + 1; // } // } // if(test<(line.length())) { // error.add(line); // }else { // correct.add(line); // } //另一种方法 boolean matches = line.matches("[0-9a-zA-Z]+"); if(matches) { //error.add(line); correct.add(line); }else { error.add(line); //correct.add(line); } test = 0; }else { //没有字符串就输出数据 String result = ""; //正确数据 boolean flag = true; LinkedList<String> list = new LinkedList<String>(new HashSet<String>(correct)); //存贮位置 int[] count = new int[list.size()]; //查找位置并存储 for (int i = 0; i < list.size(); i++) { flag = true; for (int j = 0;flag && j < correct.size(); j++) { if(list.get(i).equals(correct.get(j))) { count[i] = j; flag = false; } } } //位置排序,从correct中取数据 Arrays.sort(count); System.out.println("删减之前:"+correct.toString()); for (int i = 0; i < count.length; i++) { result = result + correct.get(count[i]) +" "; } int a = 0; for (int i = 0; i < count.length; i++) { correct.remove(count[i]-a); a++; } System.out.println("重复数据:"+correct.toString()); result = result.trim(); System.out.println(result); result = ""; //错误数据输出 for (int i = 0; i < error.size(); i++) { result = result + error.get(i) +" "; } result = result.trim(); System.out.println(result); } } } }
去重可以用hashset集合,简单方便,但是会造成无序状态
用了一个数组存储数据,数组大小为集合大小
然后根据hashset值找对应的位置序号,并存入数组,值保存第一个,因此,此处设置一个flag来结束内层循环,continue在java中貌似不适用
用arrays进行数组自动排序。自动排序之后的结果即为hashset集合中正确顺序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构