牛客周赛76B:JAVA
链接:登录—专业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();
// 读取字符串s
String 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);
}
}