操作字符

题目:https://ac.nowcoder.com/acm/contest/9715/B

首先在这里直接说一下,题意就是让你找出在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函数,求出最大的长度。

全部评论

相关推荐

点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 13:47
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务