zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 历届真题 稍大的串

    串可以按照字典序进行比较。例如:
    abcd 小于 abdc

    如果给定一个串,打乱组成它的字母,重新排列,可以得到许多不同的串,在这些不同的串中,有一个串刚好给定的串稍微大一些。科学地说:它是大于已知串的所有串中最小的串。你的任务就是求出这个“稍大的串”。

    例如:
    输入串:
    abfxy
    程序应该输出:
    abfyx

    再例如:
    输入串:
    ayyyxxff
    程序应该输出:
    fafxxyyy

    fyyyxxaa
    数据规模约定:
    输入的串不超过1000个字符。

    特例:
    如果已知的串已经是所有重组串中最大的,则原样输出读入的那个串。

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
    注意:主类的名字必须是:Main,否则按无效代码处理。

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
        
        public void getResult(String A) {
            int len = A.length();
            int i = len - 1;
            for(;i >= 1;i--)
                if(A.charAt(i - 1) < A.charAt(i))
                    break;
            if(i == 0) {
                System.out.println(A);
                return;
            }
            char temp = A.charAt(i - 1);
            char[] arrayB = A.substring(i).toCharArray();
            Arrays.sort(arrayB);
            for(int j = 0;j < arrayB.length;j++)
                if(arrayB[j] > temp) {
                    char a = arrayB[j];
                    arrayB[j] = temp;
                    temp = a;
                    break;
                }
            StringBuilder result = new StringBuilder(A.subSequence(0, i - 1));
            result.append(temp);
            for(int j = 0;j < arrayB.length;j++)
                result.append(arrayB[j]);
            System.out.println(result);
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            String A = in.next();
            test.getResult(A);
        }
    }
    
  • 相关阅读:
    Extjs5.0中的新特性
    Extjs4中的常用组件:Grid、Tree和Form
    Extjs4中的布局
    Extjs4中的store
    [IIS]IIS扫盲(三)
    [IIS]IIS扫盲(二)
    [IIS]IIS扫盲(一)
    [IIS]在CMD中IIS的使用
    检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败
    [SQL]向3个表插入数据的存储过程 和 C# 代码
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078667.html
Copyright © 2011-2022 走看看