1.判断一个字符串中的最长回文串
package exam; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(getResultString(str)); } private static String getResultString(String s) { int len = s.length(); if (len == 0) { return ""; } //用来记录最长回文串的长度 int length=0; //用来记录最长回文串下标 int left=0,right=0; //这里的二维数组下标别记错了,j是算横坐标,i算纵坐标,使用的是上三角矩阵 boolean[][] dp =new boolean[s.length()][s.length()]; for ( int i=0;i<s.length();i++){ for (int j=0;j<=i;j++){ if (i==j){ dp[j][i]=true; }else if (j+1==i){ dp[j][i]=(s.charAt(i)==s.charAt(j)); }else if (i-j>=2){ dp[j][i]=(s.charAt(i) == s.charAt(j)&&dp[j+1][i-1]); } if (dp[j][i]&&length<i-j+1){ length =i-j+1; left = j; right = i; } } } //beginIndex -- 起始索引(包括), 索引从 0 开始,endIndex -- 结束索引(不包括) return s.substring(left,right+1); } }
2.求一个序列中缺失哪个数字
package kaoshi; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Integer> list = new ArrayList<Integer>(); while (sc.hasNext()) { list.add(sc.nextInt()); } System.out.println(lack(list)); // } private static Integer lack(List<Integer> source) { int temp = 0; for (int i = 0; i < source.size(); i++) { temp = temp ^ (i + 1) ^ source.get(i); } return temp; } }
3.统计一个字符串中字符出现的次数
package exam; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class CountCharacter { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); String s = in.nextLine(); Map<Character, Integer> map = new HashMap<Character, Integer>(); char[] list = s.toCharArray(); for (char ch : list) { if(map.containsKey(ch)) { int num = map.get(ch); num = num + 1; map.put(ch, num); }else { map.put(ch, 1); } } System.out.println(map); } }
4.统计字符串中出现次数最多的k个字符
package exam; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; public class CountCharacter { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); String s = in.nextLine(); Map<Character, Integer> map = new HashMap<Character, Integer>(); char[] list = s.toCharArray(); int max = 0; for (char ch : list) { if (map.containsKey(ch)) { int num = map.get(ch); num = num + 1; map.put(ch, num); } else { map.put(ch, 1); } } List<Map.Entry<Character, Integer>> list2 = new ArrayList<Map.Entry<Character, Integer>>(map.entrySet()); Collections.sort(list2, new Comparator<Map.Entry<Character, Integer>>() { @Override public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) { // TODO Auto-generated method stub return o2.getValue().compareTo(o1.getValue()); } }); for (Map.Entry<Character, Integer> m : list2) { System.out.println(m.getKey() + "...." + m.getValue()); } } }
5.连续字符串压缩
package exam; import java.util.*; public class CountCharacter { public static void getNumFromString(String string) { StringBuilder sb = new StringBuilder(); char c = string.charAt(0); int count = 1; for (int i = 1; i < string.length(); i++) { char s = string.charAt(i); if (s == c) { count++; } else { if (count > 1) { sb.append(count); sb.append(c); count = 1; } else { sb.append(c); } } c = s; } if (count > 1) { sb.append(count); } sb.append(c); System.out.println(sb.toString()); } public static void main(String[] args) { getNumFromString("aabbcaaad"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)