java字符串替换排序实例

时间:2023-05-30 07:58:29 


import java.util.LinkedList;

public class OJ {

 public OJ() {
  super();
 }

 /*
  * 功能:输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分隔的非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉
  * ,除非这个整数就是由若干个'0'组成的,这时这个整数就是0)。 对这些非负整数按从大到小的顺序排序。
  *
  * 输入: input,由0~9数字组成的字符串。
  * 输入数据要求:无非数字字符,长度大于0且不大于1000,分隔得到的非负整数不会大于100000000,输入数据不可能全由'5'组成。
  *
  * 输出:output,字符串,是分隔得到的非负整数排序结果(从大到小),相邻整数间用一个空格分开,第一个整数前及最后一个整数后无空格。
  *
  * 返回:正常返回0,若异常失败返回-1。
  */

 public static int getSortNum(final String input, final StringBuilder output) {

  if(input.length()<=0 || input.length() > 1000){
   return -1;
  }

  String[] nums = input.split("5");
  int len = nums.length;
  LinkedList<Integer> sorted = new LinkedList<Integer>();

  int j = 0;
  for (int i = 0; i < len; i++) {
   int temp = 0;
   int k = j;
   if (!nums[i].equals("")) {
    try {
     temp = Integer.valueOf(nums[i]);
     if(temp > 100000000){
      return -1;
     }
     if (sorted.isEmpty()) {
      sorted.addFirst(temp);
      j++;
     } else {

      while (k > 0 && (temp > sorted.get(k - 1))) {
       k--;
      }
      sorted.add(k, temp);
      j++;
     }
    } catch (Exception ex) {
     return -1;
    }
   }
  }
  for (int i = 0; i < sorted.size() - 1; i++) {

   output.append(sorted.get(i) + " ");

  }
  output.append(sorted.getLast());
  output.trimToSize();

  return 0;
 }
}       

测试用例:


import junit.framework.Assert;
import junit.framework.TestCase;


public class OJTest extends TestCase
{

    public void testCase01()
    {
        // 这里写测试用例
        final StringBuilder output = new StringBuilder();
        Assert.assertTrue(-1 == OJ.getSortNum("1234543 215555", output));
    }

   
    public void testCase02()
    {
        final StringBuilder output = new StringBuilder();
        Assert.assertTrue(0 == OJ.getSortNum("1234543215555", output) && "4321 1234".equals(output.toString()));
    }

    public void testCase03()
    {
        final StringBuilder output = new StringBuilder();
        Assert.assertTrue(0 == OJ.getSortNum("12345432155556436567", output) && "6436 4321 1234 67".equals(output.toString()));
    }

    public void testCase04()
    {
        final StringBuilder output = new StringBuilder();
        Assert.assertTrue(0 == OJ.getSortNum("123454321555000000000056436567", output) && "6436 4321 1234 67 0".equals(output.toString()));
    }

    public void testCase05()
    {
        final StringBuilder output = new StringBuilder();
        Assert.assertTrue(-1 == OJ.getSortNum("1234543215510000000000000001556436567", output));
    }
}

标签:字符串替换排序
0
投稿

猜你喜欢

  • JAVA对list集合进行排序Collections.sort()

    2023-03-31 11:14:12
  • 微信小程序与AspNetCore SignalR聊天实例代码

    2022-12-21 01:29:06
  • Json字符串转Java对象和List代码实例

    2022-03-11 15:47:09
  • 使用FeignClient设置动态Url

    2022-07-04 05:55:39
  • 深入理解Spring Boot的日志管理

    2021-11-16 09:58:40
  • Mybatis-Plus环境配置与入门案例分析

    2022-02-05 01:15:01
  • Java使用贪心算法解决电台覆盖问题(示例详解)

    2022-12-31 05:58:48
  • Linux命令行下编译Android NDK的示例代码

    2023-02-13 17:19:54
  • java寻找迷宫路径的简单实现示例

    2021-07-06 13:17:50
  • Android 6.0动态权限申请教程

    2023-09-26 16:43:56
  • 快速了解Java中ThreadLocal类

    2021-06-28 03:32:20
  • Java链表(Linked List)基本原理与实现方法入门示例

    2021-10-12 05:49:14
  • Java面向对象编程(封装/继承/多态)实例解析

    2023-11-11 11:33:09
  • java二叉树的几种遍历递归与非递归实现代码

    2022-06-29 19:19:47
  • Java C++ 算法题解leetcode145商品折扣后最终价格单调栈

    2023-09-16 23:29:42
  • java 创建线程的方法总结

    2023-02-25 20:20:30
  • Spring基于常用AspectJ切点表达式使用介绍

    2023-12-08 19:58:37
  • Android开发之多媒体文件获取工具类实例【音频,视频,图片等】

    2022-03-05 22:44:24
  • java实现双色球彩票游戏

    2022-06-29 12:39:45
  • Java实战之实现一个好用的MybatisPlus代码生成器

    2023-06-18 02:16:10
  • asp之家 软件编程 m.aspxhome.com