首先在这里直接说一下,题意就是让你找出在6次操作内,例如abcd这一个字符串,你把它变成aaaa,那就是最大长度操作后的字符串.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String en = sc.nextLine();
String s = sc.nextLine();
int ans = 0;int max = 0;
for(int i = 0;i < 26;i++){
int k = n;ans = 0;
int a[] = new int[s.length()];
for(int j = 0;j < a.length;j++){
a[j] = Math.abs(s.charAt(j) - 'a' - i);
}
Arrays.sort(a);
for(int p = 0;p < a.length;p++) {
if (k <= 0) {
break;
} else {
if (k >= a[p]) {
k -= a[p];
ans++;
} else {
break;
}
}
}
max = Math.max(max,ans);
}
System.out.println(max);
}
}
这里思路就是,找字符串中每一个字符和所需要转换字符的差距。举个例子:比如说abcdef,如果只操作2次,那么最长的长度肯定是3,首先呢要把26个字母用for循环遍历。然后用一个数组,记录字符串中每一个字母转换到当前循环这个字母所需要的的次数,然后和操作次数对比,如果有操作的空间那就可以继续,然后操作次数要相应减少,然后字符串的长度要+1,最后要max函数,求出最大的长度。