由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一道新奇的面试题
相关主题
这两种写法面試时候你喜欢哪种?[合集] 如何只用putchar来实现itoa?
求教:取串中的子串好方法紧急求助,C语言面试题
两个关于matrix的问题请教[合集] 偶写的itoa
Cracking coding interview里的一道例题C++里为什么没有标准化atoi和itoa?
一个算法问题How to convert ip to int using Python ? (转载)
some interview questions i met and rememberedreverse words, not the Microsoft one!!!
这段代码为何要这样做?Reversing a singly linked list
[合集] some interview questions i met and rememberedreverse LL recursively
相关话题的讨论汇总
话题: reverse话题: 数字话题: return话题: str话题: int
进入Programming版参与讨论
1 (共1页)
l*****b
发帖数: 82
1
请几天面试一个梦想的公司,结果悲惨地死在了一道数学编程题.
请板上的大牛帮忙看看怎么解,这样我也好知道自己的差距在哪里.
题目是这样的, 给出任意一串数字, 找出旋转180度以后还是原来的值得数字串.
比如, 69旋转180度后还是69.
用什么算法来编出这个程序?
小弟的印象中好像没有任何算法是可以用来旋转数字的,难道要用图形来辅助?
L*****e
发帖数: 8347
2
翻转180度后,还能是valid的数字的数字有1,6,8,9,0?除了6变成9,9变成6以外,其它
的原样?
如果是这样的话,把原数字reverse一下
int rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
然后后原数字比,6和9match,9和6match,其它数字和本身match。如果有1,6,8,9,0以
外的数字,返回false。。。

【在 l*****b 的大作中提到】
: 请几天面试一个梦想的公司,结果悲惨地死在了一道数学编程题.
: 请板上的大牛帮忙看看怎么解,这样我也好知道自己的差距在哪里.
: 题目是这样的, 给出任意一串数字, 找出旋转180度以后还是原来的值得数字串.
: 比如, 69旋转180度后还是69.
: 用什么算法来编出这个程序?
: 小弟的印象中好像没有任何算法是可以用来旋转数字的,难道要用图形来辅助?

d***a
发帖数: 13752
3
先找出0,1,6,8,9构成的子串,再从子串的两边开始左右匹配,1可以和1匹配,6可以和
9匹配,如此这般,左右index相逢就找到了一个解。算法复杂度是O(n^2),可能有更优
解。
b*******s
发帖数: 5216
4
就 0 1 6 8 9 需要考虑

【在 l*****b 的大作中提到】
: 请几天面试一个梦想的公司,结果悲惨地死在了一道数学编程题.
: 请板上的大牛帮忙看看怎么解,这样我也好知道自己的差距在哪里.
: 题目是这样的, 给出任意一串数字, 找出旋转180度以后还是原来的值得数字串.
: 比如, 69旋转180度后还是69.
: 用什么算法来编出这个程序?
: 小弟的印象中好像没有任何算法是可以用来旋转数字的,难道要用图形来辅助?

L*****e
发帖数: 8347
5
为啥要找子串?它是整个数字翻转?还是数字中的子串翻转?
楼主的问题好像是不知道如何把一个数字“翻转”180度。。。

【在 d***a 的大作中提到】
: 先找出0,1,6,8,9构成的子串,再从子串的两边开始左右匹配,1可以和1匹配,6可以和
: 9匹配,如此这般,左右index相逢就找到了一个解。算法复杂度是O(n^2),可能有更优
: 解。

b*******s
发帖数: 5216
6
先切分一次,以不在这个数字集合里的为边界切成一系列子串
这个复杂度O(n)
然后每个字串找回文子串,这是个经典题
唯一需要修改的是,69的处理,可以先当成一个数字,然后几种模式再检查一次

【在 l*****b 的大作中提到】
: 请几天面试一个梦想的公司,结果悲惨地死在了一道数学编程题.
: 请板上的大牛帮忙看看怎么解,这样我也好知道自己的差距在哪里.
: 题目是这样的, 给出任意一串数字, 找出旋转180度以后还是原来的值得数字串.
: 比如, 69旋转180度后还是69.
: 用什么算法来编出这个程序?
: 小弟的印象中好像没有任何算法是可以用来旋转数字的,难道要用图形来辅助?

L*****e
发帖数: 8347
7
其实都不用先reverse数字,可以对原数字每次首尾各取一个digit互相比较。至于怎么
从首尾每次各取一个digit,稍微想一下就知道了,小学数学的知识就够。。。

【在 L*****e 的大作中提到】
: 翻转180度后,还能是valid的数字的数字有1,6,8,9,0?除了6变成9,9变成6以外,其它
: 的原样?
: 如果是这样的话,把原数字reverse一下
: int rev = 0;
: while (num != 0) {
: rev = rev * 10 + num % 10;
: num /= 10;
: }
: 然后后原数字比,6和9match,9和6match,其它数字和本身match。如果有1,6,8,9,0以
: 外的数字,返回false。。。

b*******s
发帖数: 5216
8
in place的算法只是技巧问题

【在 L*****e 的大作中提到】
: 其实都不用先reverse数字,可以对原数字每次首尾各取一个digit互相比较。至于怎么
: 从首尾每次各取一个digit,稍微想一下就知道了,小学数学的知识就够。。。

L*****e
发帖数: 8347
9
楼主题目说的很模糊,这个“数字”是string啊?还是int?还是其它?然后是整个数
字转?还是部分子串转?

【在 b*******s 的大作中提到】
: 先切分一次,以不在这个数字集合里的为边界切成一系列子串
: 这个复杂度O(n)
: 然后每个字串找回文子串,这是个经典题
: 唯一需要修改的是,69的处理,可以先当成一个数字,然后几种模式再检查一次

b*******s
发帖数: 5216
10
反正这题比较简单的

【在 L*****e 的大作中提到】
: 楼主题目说的很模糊,这个“数字”是string啊?还是int?还是其它?然后是整个数
: 字转?还是部分子串转?

相关主题
some interview questions i met and remembered[合集] 如何只用putchar来实现itoa?
这段代码为何要这样做?紧急求助,C语言面试题
[合集] some interview questions i met and remembered[合集] 偶写的itoa
进入Programming版参与讨论
L*****e
发帖数: 8347
11
看他题目要求了,如果input数字是int,你或者要先itoa,这个不但占了时间还另占空
间;如果是先reverse int的话,有可能有overflow的问题,所以能in place地做是最好
的。。。

【在 b*******s 的大作中提到】
: in place的算法只是技巧问题
l*****b
发帖数: 82
12
小弟英语很一般, 只能听到大概, 给位老大请见谅. 大概就是给一串int的数字串, 如"
3448835642345044354369401203911....", 找出旋转后还是原来值得int子串的数目.

【在 L*****e 的大作中提到】
: 楼主题目说的很模糊,这个“数字”是string啊?还是int?还是其它?然后是整个数
: 字转?还是部分子串转?

n*****t
发帖数: 22014
13
我看这就是 atoi 的变形虫,有木有
b*******s
发帖数: 5216
14
回文要用trie

【在 n*****t 的大作中提到】
: 我看这就是 atoi 的变形虫,有木有
p*****2
发帖数: 21240
15
(defn rotate [num]
(let [m {\0 \0, \1 \1, \6 \9, \8 \8, \9 \6}
str (str num)
rot (clojure.string/join (reverse (map #(or (m %) \*) str)))]
(= str rot)))
b*******s
发帖数: 5216
16
看起来真是美,不过一些情况你估计没考虑到
比如
619

【在 p*****2 的大作中提到】
: (defn rotate [num]
: (let [m {\0 \0, \1 \1, \6 \9, \8 \8, \9 \6}
: str (str num)
: rot (clojure.string/join (reverse (map #(or (m %) \*) str)))]
: (= str rot)))

n*****t
发帖数: 22014
17
发明这语法的肯定是天杀的,一点美感都没有

【在 p*****2 的大作中提到】
: (defn rotate [num]
: (let [m {\0 \0, \1 \1, \6 \9, \8 \8, \9 \6}
: str (str num)
: rot (clojure.string/join (reverse (map #(or (m %) \*) str)))]
: (= str rot)))

p*****2
发帖数: 21240
18

619应该true还是false呢?

【在 b*******s 的大作中提到】
: 看起来真是美,不过一些情况你估计没考虑到
: 比如
: 619

r**i
发帖数: 886
19
应该是true

【在 p*****2 的大作中提到】
:
: 619应该true还是false呢?

p*****2
发帖数: 21240
20

我这个就是true呀

【在 r**i 的大作中提到】
: 应该是true
相关主题
C++里为什么没有标准化atoi和itoa?Reversing a singly linked list
How to convert ip to int using Python ? (转载)reverse LL recursively
reverse words, not the Microsoft one!!!考考你的能力。
进入Programming版参与讨论
d****i
发帖数: 4809
21
clojure就是lisp的马甲,以前在本科上AI的时候学过lisp,就从来没喜欢过它的语法
,觉得就是个银样蜡枪头,不中用,既不像C那样贴近机器,又不像Java那样贴近抽象
对象。

【在 n*****t 的大作中提到】
: 发明这语法的肯定是天杀的,一点美感都没有
c****d
发帖数: 116
22
1也能算么?转180度就不是1了吧

【在 b*******s 的大作中提到】
: 就 0 1 6 8 9 需要考虑
n**s
发帖数: 2230
23
这题不就是reverse string 的变种吗?
n*w
发帖数: 3393
24
很美
再贴个f#
let rotate i =
let m = [ '0', '0'; '1','1';'6','9';'8','8';'9','6']|> Map.ofList
string i |> Seq.fold (fun a e -> m.[e]::a)[] |> String.Concat |> int = i
c#
bool rotate (int i)
{
var m= new Dictionary(){{'0','0'},......
var l= i.ToString(). Select (c => m[c]).ToArray();
Array. Reverse ();
return Convert. ToInt32(String. Concat(l))== i;
}

【在 p*****2 的大作中提到】
: (defn rotate [num]
: (let [m {\0 \0, \1 \1, \6 \9, \8 \8, \9 \6}
: str (str num)
: rot (clojure.string/join (reverse (map #(or (m %) \*) str)))]
: (= str rot)))

i**i
发帖数: 1500
25
js:
(function(s){return Number((''+s).split("").map(function(v){if(v!=6&&v!=9)
return v; return {6:9,9:6}[v];}).reverse().join(""));})(919)
i**i
发帖数: 1500
26
ver 2:
(function(s){s=''+s; if(!/^[01689]+$/.test(s)) return false; return s===s.
split("").map(function(v){return {0:0,1:1,6:9,8:8,9:6}[v];}).reverse().join(
"");})(60109)
1 (共1页)
进入Programming版参与讨论
相关主题
reverse LL recursively一个算法问题
考考你的能力。some interview questions i met and remembered
Reverse Words in a String这段代码为何要这样做?
对指针很熟的高手能否给菜鸟分步骤讲解一下这个单链翻转是怎么实现的?[合集] some interview questions i met and remembered
这两种写法面試时候你喜欢哪种?[合集] 如何只用putchar来实现itoa?
求教:取串中的子串好方法紧急求助,C语言面试题
两个关于matrix的问题请教[合集] 偶写的itoa
Cracking coding interview里的一道例题C++里为什么没有标准化atoi和itoa?
相关话题的讨论汇总
话题: reverse话题: 数字话题: return话题: str话题: int