链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
给定一个长度为 nnn ,仅包含小写字母的字符串 sss 。
请你构造出一个非空字符串 ttt ,使得它在 sss 中作为子串出现的次数最多。
子串是指,从原字符串中连续截取一些字符,得到的新字符串。
输入描述:
第一行有一个整数 n ( 1≤n≤105 )n\ (\ 1 \leq n \leq 10^5\ )n ( 1≤n≤105 ) 。 第二行有一个字符串 sss ,字符串仅包含小写字母。
输出描述:
输出一个字符串,代表构造得到的字符串 ttt 。
如果有多个字符串符合条件,输出任意一个即可。
示例1
输入
5 dbace
输出
ac
说明
输出 bababa 或者 dbacedbacedbace 也是可以的。
import java.util.*;public class Main {public static void main(String[] args) {// 创建一个Scanner对象用于读取输入Scanner sc = new Scanner(System.in);// 读取一个整数n(虽然在后续代码中没有使用到)int n = sc.nextInt();// 读取换行符,以便正确读取下一行字符串sc.nextLine();// 读取字符串sString s = sc.nextLine();// 关闭Scanner对象sc.close();// 创建一个长度为26的数组c,用于记录每个字母出现的次数int[] c = new int[26];// 遍历字符串s中的每个字符,并统计每个字母的出现次数for (char ar : s.toCharArray()) {c[ar - 'a']++;}// 初始化max为'a',表示当前出现次数最多的字母char max = 'a';// 从第二个字母开始遍历数组c,找到出现次数最多的字母for (int i = 1; i < 26; i++) {if (c[i] > c[max - 'a']) {max = (char) ('a' + i);}}// 将结果转换为字符串并输出String t = String.valueOf(max);System.out.println(t);}
}