zoukankan      html  css  js  c++  java
  • OJ刷题——字符逆转

    题目描述

    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());
                }
            }
        }
    
    }
    
    
    
     
  • 相关阅读:
    (6)Lua 模块与包
    (3)Lua 迭代器与迭代函数
    (二)miller指导查看主控板寄存器操作
    (一)mtg3000常见操作
    (三)NAND flash和NOR flash的区别详解
    (八)shell中的循环结构
    (七)shell编程学习
    (六)动手写第一个shell
    (五)uboot移植补基础之shell
    (四)ubuntu学习前传—uboot中对Flash和DDR的管理
  • 原文地址:https://www.cnblogs.com/lzhxue/p/12748739.html
Copyright © 2011-2022 走看看