码迷,mamicode.com
首页 > 其他好文 > 详细

OJ刷题——字符逆转

时间:2020-04-22 00:24:26      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:ann   break   lse   main   个数   end   没有   print   out   

题目描述

Birdfly是一位优秀的acmer,他自幼都数学有着浓烈的兴趣。作为一名集训队员,总爱思考一些新奇的问题,寻求不同的解题方法。
Birdfly一直坚信freshmen的潜力是无穷的!因为你们是ZZULI ACM的未来!ACM的题目并不是那么简单,但这一题so easy!^_^
一天晚上,birdfly躺在床上毫无睡意……他想,任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗?
逆转数定义如下:
1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出;
2.一个负数的逆转数仍是负数;
3.一个末尾有0的整数,它的逆转数如同下例:reverse (1200) = 2100。
看着birdfly难以入睡,我只好求助于聪明的你编程实现这个问题,相信你一定能帮上忙的!

输入

输入数组有多组, 每组测试实例包含一个大数且占一行。

输出

对每组测试实例,输出它的逆转数。每组占一行。

样例输入
0
54
-8989
-54600
100000
样例输出
0
45
-9898
-64500
100000

附上代码:
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()) {
            String str = scan.nextLine();
            int len = str.length();
            StringBuilder sb = new StringBuilder();
            if(str.charAt(0)==‘-‘) {
                if(str.charAt(len-1)==‘0‘) {
                    int indexZero = 0;
                    for(int i = len-1;i>0;i--) {
                        if(str.charAt(i)!=‘0‘) {
                            indexZero = i;
                            break;
                        }
                    }
                    sb.append(str.substring(1, indexZero+1));
                    sb.reverse();
                    sb.append(str.substring(indexZero+1, len));
                    
                }else {
                    sb.append(str.substring(1, len));
                    sb.reverse();
                }
                System.out.println("-"+sb.toString());
            }else {
                if(str.charAt(len-1)==‘0‘) {
                    int indexZero = 0;
                    for(int i = len-1;i>0;i--) {
                        if(str.charAt(i)!=‘0‘) {
                            indexZero = i;
                            break;
                        }
                    }
                    sb.append(str.substring(0, indexZero+1));
                    sb.reverse();
                    sb.append(str.substring(indexZero+1, len));
                    
                }else {
                    sb.append(str);
                    sb.reverse();
                }
                System.out.println(sb.toString());
            }
        }
    }

}

 

 

OJ刷题——字符逆转

标签:ann   break   lse   main   个数   end   没有   print   out   

原文地址:https://www.cnblogs.com/lzhxue/p/12748739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!