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));
}
}


猜你喜欢
- 很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地、Intranet 或 I
- 本文实例为大家分享了Android实现圆形云标签效果展示的具体代码,供大家参考,具体内容如下下面是实现的效果图:这个适合用于选择 用户的一些
- Java 异步实现的几种方式1. jdk1.8之前的Futurejdk并发包里的Future代表了未来的某个结果,当我们向线程池中提交任务的
- Vector简介ArrayList 和 Vector 其实大同小异,基本结构都差不多,但是一些细节上有区别:比如线程安全与否,扩容的大小等,
- 可以用于简单的过期订单取消支付、7天自动收货场景中1、Spring Boot整合redis 参考https://www.jb51.net/a
- Java代码package com.zzx.controller;import com.zzx.model.User;import org.
- 本文实例讲述了Java创建ZIP压缩文件的方法。分享给大家供大家参考。具体如下:这里注意:建议使用org.apache.tools.zip.
- FrameLayout(帧布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayo
- 一、什么是 RestTemplate?RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK Ht
- Eclipse安装配置好之后,小千再来带大家进行基本的使用。1. 创建项目我们可以点击左上角的File-->New-->Proj
- 前言制作无边框窗口时,系统自带阴影会消失,这时就需要我自己给窗口添加阴影以防止窗口融入背景。添加阴影的方法很简单,直接用effect就可以了
- 一、什么是ASMASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,
- 最近有个老项目想逐步将新业务的数据放到新的数据库,以前的业务还得连接以前的数据库,于是需要整合多数据源 。多数据源实际上是继承了Abstra
- 使用volley进行网络请求:需先将volley包导入androidstudio中File下的Project Structrue,点加号导包
- <?xml version="1.0" encoding="UTF-8" ?> <
- RecyclerView是Android 5.0的新特性,可以直接代替ListView与GridView,并且能够实现瀑布流的布局,感觉Re
- 先看下效果图:这个需要用到1个开源的 库,这个后面也会说下的。工程目录:1. MainActivity.javapublic class M
- 字节流和字符流对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流。1.从对文件的操作来讲,有读和写的操作——也就是
- CXF简介CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫 Apache Celt
- 今天写项目突然出现了无法启动Gradle的bug,如下图然后就看了log日志:这个问题是我第一次看见,然后就开始了各种百度,有说需要在And