由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个考古的题
相关主题
Amazon onsite面试的惨痛经历a2z(amazon 子公司)电面题目
问道google面试题一道面试题(integer to binary string)
好不容易写了个bug free, 可是被说会秒据, 帮看看收到G家拒信,发面经
贡献G家电面面经问个java hashcode的题
lintcode delete digits怎么做?Exposed上一道string permutation的题
Palindrome那题,OJ上通不过问一个facebook的电面
Palindrome那题,OJ上通不过一道G家店面题
Airbnb到底招什么样的人?做题做得很郁闷,求指点
相关话题的讨论汇总
话题: digit话题: int话题: string话题: num话题: return
进入JobHunting版参与讨论
1 (共1页)
h****n
发帖数: 1093
1
excel的index转换,数字 -> index
这个具体是什么题,谁能具体说说么,谢谢
s****a
发帖数: 528
2
A-Z, AA-AZ - ZZ : total 27*26 possibility, so 每个位上-进位不一样
第一个是26进制,往后都是27进制
h****n
发帖数: 1093
3
got it,多谢楼上的回答
h****n
发帖数: 1093
4
纠正一下,貌似每个位都是26进制
h****n
发帖数: 1093
5
share一下我的代码,欢迎指正:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class ExcelIndexConversion
{
static int CharToInt(char c)
{
if (c < 'A' || c > 'Z')
return -1;
return (int)(c - 'A' + 1);
}
static char IntToChar(int digit)
{
if (digit < 1 || digit > 26)
return '#';
return (char)(digit + 'A' -1);
}
static int IndexToNum(String index)
{
int res = 0;
int digit = -1;
for (int i = 0; i < index.Length; i++)
{
digit = CharToInt(index[i]);
if (digit < 0) return -1;
res = res * 26 + digit;
}
return res;
}
static string NumToIndex(int num)
{
StringBuilder tmpStr = new StringBuilder();
StringBuilder resStr = new StringBuilder();
int digit;
if (num < 1)
{
resStr.Append("#");
return resStr.ToString();
}
else if (num < 27)
{
//如果只有一位要进行特别处理。。。
return IntToChar(num).ToString();
};
do
{
digit = num % 26;
tmpStr.Append(IntToChar(digit));
num = num / 26;
}while(num != 0 );
String tmp = tmpStr.ToString();
//reverse the string
for (int i = tmp.Length - 1; i >= 0; i--)
{
resStr.Append(tmp[i]);
}
return resStr.ToString();
}
static void Main(string[] args)
{
String testIndex = "AABB";
String resString;
int res = IndexToNum(testIndex);
resString = NumToIndex(res);
}
}
}
l*****a
发帖数: 14598
6
why 27 based?
void Get(int n)
{
stack s;
while(n)
{
int reminder=n%26;
if(reminder==0) {s.push('Z');n=n-26;}
else { s.push(char(reminder+'A'-1));n=n-reminder;}
n/=26;
}
while(!s.empty())
{
cout< s.pop();
}
cout<
}

【在 s****a 的大作中提到】
: A-Z, AA-AZ - ZZ : total 27*26 possibility, so 每个位上-进位不一样
: 第一个是26进制,往后都是27进制

1 (共1页)
进入JobHunting版参与讨论
相关主题
做题做得很郁闷,求指点lintcode delete digits怎么做?
问一道A家的面试题Palindrome那题,OJ上通不过
发个Twitter的面试题Palindrome那题,OJ上通不过
50行code能解决addbinary 问题么Airbnb到底招什么样的人?
Amazon onsite面试的惨痛经历a2z(amazon 子公司)电面题目
问道google面试题一道面试题(integer to binary string)
好不容易写了个bug free, 可是被说会秒据, 帮看看收到G家拒信,发面经
贡献G家电面面经问个java hashcode的题
相关话题的讨论汇总
话题: digit话题: int话题: string话题: num话题: return