来看各种数值的反转吧(洛谷P1553题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
来看各种数值的反转吧(洛谷P1553题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P1553題目鏈接
分析
建議分別識別不同類型,進行處理。
整數倒置、排0。
分數只是分隔開分母和分子,分別按照整數來處理。
小數注意整數部分按照整數處理,小數部分要反過來處理。
百分數在排除%以后按照整數處理。
有一些問題是在用regex時,".“不能表示小數點,應該用”\."才行,這個要注意,很重要。。我第一次提交就是因為這個爆的異常。
還有就是整數部分和小數部分處理方式不一致,這個一定要注意,否則會WA掉。
具體的實現看代碼吧!
第一次提交——RE
獲取了測試數據2:
in
0.00000
out
0.0
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {private static String reverse1(String num) {char[] chars = new StringBuilder(num).reverse().toString().toCharArray();int count = 0;while (count < chars.length && chars[count] == '0') {count++;}if (count >= chars.length) {return "0";}return new String(chars).substring(count);}private static String reverse2(String num) {char[] chars = new StringBuilder(num).reverse().toString().toCharArray();int count = chars.length-1;while (count >= 0 && chars[count] == '0') {count--;}if (count < 0) {return "0";}return new String(chars).substring(0, count+1);}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String num = scanner.nextLine();scanner.close();if (num.contains(".")) {//小數String[] nums = num.split("\\.");System.out.println(reverse1(nums[0]) + "." + reverse2(nums[1]));} else if (num.contains("/")) {//分數String[] nums = num.split("/");System.out.println(reverse1(nums[0]) + "/" + reverse1(nums[1]));} else if (num.endsWith("%")) {//百分數System.out.println(reverse1(num.substring(0, num.length()-1)) + "%");} else {//整數System.out.println(reverse1(num));}} }總結
以上是生活随笔為你收集整理的来看各种数值的反转吧(洛谷P1553题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【面向对象】面向对象程序设计测试题5-J
- 下一篇: 【数据结构与算法】压缩矩阵的Java实现