给定一个整数,求比该整数大的最小的整数,其数字能够组成一个回文
2011-11-18 16:48
344 查看
Given an integer find the next(smallest number greater than given number) integer which is palindrom
for example:
111 next palindrom 121
301 next palindrom 303
A: 设原始数字为a,数字位数是n
1. 如果数字的位数n是odd奇数,固定中间的数字;如果是even偶数,固定中间的两个数字;
2. 将固定的数字前面的字符串,反转复制到后面去,生成数字b;
e.g: 12345 -> 12321, 123456 - > 123421
3. 判断新生成的数字 if (b>a),yes,则已经成功,直接输出即可;
4. 如果b<a, 则
1) 如果n是奇数,则直接将中间固定的数字+1; 如果溢出,产生进位,则回到第1步
2) 如果n是偶数,则判断中间的两个数字 c 和 d (例如:123456,此时c=3,d=4)
如果c>d, 则设置d=c即可
如果c<d, 则设置c++, 再令d=c
sample:
12345 -> 12321 -> 12421
123578 -> 123521 -> 124421
12930 -> 12921 -> 13021 -> 13031
for example:
111 next palindrom 121
301 next palindrom 303
A: 设原始数字为a,数字位数是n
1. 如果数字的位数n是odd奇数,固定中间的数字;如果是even偶数,固定中间的两个数字;
2. 将固定的数字前面的字符串,反转复制到后面去,生成数字b;
e.g: 12345 -> 12321, 123456 - > 123421
3. 判断新生成的数字 if (b>a),yes,则已经成功,直接输出即可;
4. 如果b<a, 则
1) 如果n是奇数,则直接将中间固定的数字+1; 如果溢出,产生进位,则回到第1步
2) 如果n是偶数,则判断中间的两个数字 c 和 d (例如:123456,此时c=3,d=4)
如果c>d, 则设置d=c即可
如果c<d, 则设置c++, 再令d=c
sample:
12345 -> 12321 -> 12421
123578 -> 123521 -> 124421
12930 -> 12921 -> 13021 -> 13031
相关文章推荐
- 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 给定K个整数,找出由这K个整数组成的最小的数字
- LeetCode试题之““给定一个正整数A,找到最小的正整数B,它的每一个数字的乘法等于A。””
- 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。例如,a=13243221,k=5,输出:12
- 整数问题 --如果一个数能够被组成它的各个非0数字整除,则称它是完美数。
- 19 获取给定的数组能够组成的最小的数字
- 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对所给的n和s,寻找一种方案使得剩下的数字组成的新数最小。
- 对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
- 给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
- 陈利人 面试题 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。
- 给定一个整数,并允许将其删除n个数字,使得值最小,例:data:178593, 删除一个数字,result:17593
- 【华为面试题】给定一个数字(整数),判断它是否回文
- 面试题01 由四个数字组成的一个最大数和最小数,最大数减去最小数正好是这四个数字组成的另外一个数n,求n的值
- 给定一个递增排序的数组和一个数字s,求数组中和为s的俩个数。求乘积最小的俩个数
- 在整数中删除数字,留下4个,使得余下的数字按原次序组成的新数最小
- 给定一个带通配符问号的数W,问号可以代表任意一个一位数字。 再给定一个整数X,和W具有同样的长度。 问有多少个整数符合W的形式并且比X大?