不是情况没有考虑周全,是代码出现了部分错误
(=—=)
这道题考虑的情况非常多啊,都是跟0有关
修改了好久次,还有一个测试用例没有通过(95分。。。),今天下载测试用例的机会用完了,明天再看看是少考虑了哪一种情况(枯辽~~)
先附上今晚上(错误)的代码:
package _5_6;
import java.util.ArrayList;
import java.util.Scanner;
public class Fanzhuan_1553 {
static ArrayList<Integer> a = new ArrayList<>();
static ArrayList<Integer> b = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
if(s.contains(".")) {
String s1[] = s.split("\\.");
char c1[] = s1[0].toCharArray();
char c2[] = s1[1].toCharArray();
char c[] = new char[c1.length+c2.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
for(int i=c2.length-1;i>=0;i--) {
b.add(c2[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {//当只有一个0的时候就保留这一个0
if(a.get(0)==0) {
break;
}
}
a.remove(a.get(0));
}
while(b.get(b.size()-1)==0) {
if(b.size()==1) {
if(b.get(b.size()-1)==0) {
break;
}
}
b.remove(b.get(b.size()-1));
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print(".");
for(int i=0;i<b.size();i++) {
System.out.print(b.get(i));
}
}else if(s.contains("/")){
String s1[] = s.split("/");
char c1[] = s1[0].toCharArray();
char c2[] = s1[1].toCharArray();
char c[] = new char[c1.length+c2.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
for(int i=c2.length-1;i>=0;i--) {
b.add(c2[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {
if(a.get(0)==0) {
break;
}
}
a.remove(a.get(0));
}
while(b.get(0)==0) {
if(b.size()==1) {
if(b.get(0)==0) {
break;
}
}
b.remove(b.get(0));
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print("/");
for(int i=0;i<b.size();i++) {
System.out.print(b.get(i));
}
}else if(s.contains("%")) {
String s1[] = s.split("%");
char c1[] = s1[0].toCharArray();
char c[] = new char[c1.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {
if(a.get(0)==0) {
break;
}
}
a.remove(a.get(0));
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print("%");
}else {
if(s.equals("0")) {
System.out.println(0);
}else {
char c1[] = s.toCharArray();
char c[] = new char[c1.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
while(a.get(0)==0) {
a.remove(a.get(0));
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
}
}
}
}
更正后得代码!!!
利用arrayList直接删除数字得remove()函数,里面的参数是下标!!参数是下标!!下标!!
在这个测试用例中5043020.060742102
之前的代码运行出来是 203405.212476
把我小数点后得所有零都删掉了,因为我往remove放入得是0这个数字,而不是下标。所以它从左边遇到得第一个开始删除。
但是其他小数点前还有整数分数这样子没有出错的原因是因为: 只有当0是第一个元素得时候删除。。。所以 这个时候0==下标0,所以删掉了第一个0
正确代码!!!!
洛谷 / 评测记录 / 评测详情
R18848814 评测详情
应用
题库
训练
比赛
记录
讨论
糖炒栗子
P1553 数字反转(升级版)
Accepted
100
代码
Java 8,2.55KB
提交时间
2019-05-07 21:08:32
耗时/内存
1961ms, 27536KB
评测状态
Accepted 100
用时: 1961ms / 内存: 27536KB
编译信息
编译成功
已添加清单
正在添加: Main.class(输入 = 2815) (输出 = 1410)(压缩了 49%)
测试点信息
#1
AC
92ms/13772KB
#2
AC
117ms/27536KB
#3
AC
113ms/16588KB
#4
AC
86ms/12472KB
#5
AC
121ms/13252KB
#6
AC
94ms/12304KB
#7
AC
91ms/12692KB
#8
AC
102ms/16840KB
#9
AC
96ms/12484KB
#10
AC
94ms/12396KB
#11
AC
105ms/17128KB
#12
AC
93ms/12368KB
#13
AC
89ms/12372KB
#14
AC
108ms/17024KB
#15
AC
90ms/12440KB
#16
AC
90ms/12464KB
#17
AC
107ms/16976KB
#18
AC
97ms/12324KB
#19
AC
87ms/12584KB
#20
AC
89ms/12468KB
测试数据下载
因为该记录状态(AC或CE等)不能提供数据下载。
洛谷免费提供该记录第一个非AC的输入输出数据下载;部分题目因为版权等原因,不开放数据下载。
24小时内,灰名允许下载2次(一对输入及输出算一次),蓝名允许下载4次,绿名6次,橙名8次,红名10次。
因近期有人注册大量垃圾账户滥用此规则试图盗取数据,现限制该功能仅限实名认证用户使用。
源代码 复制 如何修改字体?
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static ArrayList<Integer> a = new ArrayList<>();
static ArrayList<Integer> b = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
if(s.contains(".")) {
String s1[] = s.split("\\.");
char c1[] = s1[0].toCharArray();
char c2[] = s1[1].toCharArray();
char c[] = new char[c1.length+c2.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
for(int i=c2.length-1;i>=0;i--) {
b.add(c2[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {
if(a.get(0)==0) {
break;
}
}
a.remove(0);
}
while(b.get(b.size()-1)==0) {
if(b.size()==1) {
if(b.get(b.size()-1)==0) {
break;
}
}
b.remove(b.size()-1);
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print(".");
for(int i=0;i<b.size();i++) {
System.out.print(b.get(i));
}
}else if(s.contains("/")){
String s1[] = s.split("/");
char c1[] = s1[0].toCharArray();
char c2[] = s1[1].toCharArray();
char c[] = new char[c1.length+c2.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
for(int i=c2.length-1;i>=0;i--) {
b.add(c2[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {
if(a.get(0)==0) {
break;
}
}
a.remove(0);
}
while(b.get(0)==0) {
if(b.size()==1) {
if(b.get(0)==0) {
break;
}
}
b.remove(0);
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print("/");
for(int i=0;i<b.size();i++) {
System.out.print(b.get(i));
}
}else if(s.contains("%")) {
String s1[] = s.split("%");
char c1[] = s1[0].toCharArray();
char c[] = new char[c1.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
while(a.get(0)==0) {
if(a.size()==1) {
if(a.get(0)==0) {
break;
}
}
a.remove(0);
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
System.out.print("%");
}else {
if(s.equals("0")) {
System.out.println(0);
}else {
char c1[] = s.toCharArray();
char c[] = new char[c1.length];
for(int i=c1.length-1;i>=0;i--) {
a.add(c1[i]-'0');
}
while(a.get(0)==0) {
a.remove(0);
}
for(int i=0;i<a.size();i++) {
System.out.print(a.get(i));
}
}
}
}
}
继续加油~