每日编程系列——数字翻转
2017-02-24 10:43
183 查看
一、题目
对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果X=123,则rev(X)=321;
如果X=100,则rev(X)=1.
现在给出整数x和y,要求rev(rev(x)+rev(y))为多少?
[b]输入描述:[/b]
[b]输出描述:[/b]
[b]输入例子:[/b]
[b]输出例子:[/b]
原理简单说就是先将数字对应的字符串翻转,然后截取掉前导0,再转化成数字返回。
然后小编自己又利用数组循环,将前后字符互换,同时去掉前导0字符的思想,对题目进行了求解,以下为算法:
对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果X=123,则rev(X)=321;
如果X=100,则rev(X)=1.
现在给出整数x和y,要求rev(rev(x)+rev(y))为多少?
[b]输入描述:[/b]
输入为一行,x、y(1≤x、y≤1000),以空格隔开。
[b]输出描述:[/b]
输出rev(rev(x)+rev(y))的值
[b]输入例子:[/b]
123100
[b]输出例子:[/b]
223 二、答案解析 相信好多人读完题,心中就有了大概,问题的关键在于rev()函数,所以我们只挑重点讲。 在jdk里已经为我们封装了大量的操作方法,先看一下利用jdk解题的方法:
1importjava.util.Scanner; 2 3/** 4*Createdbyandrewon2017/2/24. 5*/ 6publicclassTest{ 7publicstaticvoidmain(String[]args){ 8Scannerscanner=newScanner(System.in); 9while(scanner.hasNext()){ 10intx=scanner.nextInt(); 11inty=scanner.nextInt(); 12System.out.println(rev(rev(x)+rev(y))); 13} 14} 15 16publicstaticintrev(intn){ 17StringoriginalStr=Integer.toString(n); 18StringBuildersb=newStringBuilder(originalStr); 19StringcurrentStr=sb.reverse().toString(); 20char[]array=currentStr.toCharArray(); 21//指向有效头部字符(从首部开始第一个不为0)在数组中的下标 22inthead=0; 23for(inti=0;i<array.length/2-1;i++){ 24if(Character.compare(array[i],'0')!=0){ 25head=i; 26break; 27} 28} 29returnInteger.parseInt(String.valueOf(array).substring(head)); 30} 31}
原理简单说就是先将数字对应的字符串翻转,然后截取掉前导0,再转化成数字返回。
然后小编自己又利用数组循环,将前后字符互换,同时去掉前导0字符的思想,对题目进行了求解,以下为算法:
相关文章推荐
- c语言编程:实现数字的翻转
- 网易2017秋招编程题-数字翻转
- 为学论坛“每日一题”系列---数字和字母的映射
- 每日编程系列——回文序列
- 每日编程系列———买苹果
- 每日编程系列———最大奇约数
- 网易2017秋招编程题:数字翻转 [python]
- [每日编程]求 largest Number - 给出一组非负整数,求这些非负整数可以拼接出的最大数字
- 每日编程系列——暗黑的字符串
- 每日编程系列——硬币找零
- 每日编程系列——跳石板
- 每日编程系列——洗牌
- c编程:数字翻转
- 每日编程系列——优雅的点
- 牛客网编程练习之网易2017校招题:数字翻转
- 每日编程系列———计算糖果
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
- [CodeProject每日一荐] 藏东西系列:在AVI文件中隐藏信息
- 3D 游戏编程大师技巧系列 读书笔记(-)
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列