Redian新闻
>
HOA管的太多了
avatar
HOA管的太多了# Living
l*m
1
JAVA 不太熟,尝试着快速写了下这两道题,请各位大牛帮忙看看啊,有没有什么
问题。当然我这里没有考虑大数问题,这个呆会我再想想,或者谁教我也好。
public class RomansToInt {
public static HashMap map;
public static int RomanToInt(String input) {
if (input == null || input.length() == 0) {
System.out.println("The input is not valid");
return -1;
}
int len = input.length();
if (len == 1) {
return map.get(input.charAt(0));
}
int result = 0;
int i = 0;
while (i < len) {
if ((i + 1) < len
&& map.get(input.charAt(i + 1)) > map.get(input.charAt(i
))) {
result += (map.get(input.charAt(i + 1)) - map.get(input
.charAt(i)));
i = i + 2;
} else {
result += map.get(input.charAt(i));
i = i + 1;
}
}
return result;
}
public static void main(String[] args) {
map = new HashMap();
map.put('I', 1);
map.put('V', 5);
map.put('X', 10);
map.put('L', 50);
map.put('C', 100);
map.put('D', 500);
map.put('M', 1000);
String s = "";
System.out.println(s + " : " + RomanToInt(s));
}
}
~~~~~~~~~~~~
Int 转罗马
class MapNode{
public int key;
public String value;
MapNode(int k, String str){
key = k;
value = str;
}
}
public class IntToRoman {
public static ArrayList map;
private static String IntToRomans(int input) {
if (input == 0) {
return null;
}
String result = "";
for(MapNode node:map){
int current = node.key;
while (input >= current) {
result += node.value;
input = input - current;
}
}
return result;
}
private static void Init() {
map = new ArrayList();
map.add(new MapNode(1000,"M"));
map.add(new MapNode(900,"CM"));
map.add(new MapNode(500,"D"));
map.add(new MapNode(400,"CD"));
map.add(new MapNode(100,"C"));
map.add(new MapNode(90,"XC"));
map.add(new MapNode(50,"L"));
map.add(new MapNode(40,"XL"));
map.add(new MapNode(10,"X"));
map.add(new MapNode(9,"IX"));
map.add(new MapNode(5,"V"));
map.add(new MapNode(4,"IV"));
map.add(new MapNode(1,"I"));
}
public static void main(String[] args) {
Init();
int testInput = 10;
System.out.println(testInput + " : " + IntToRomans(testInput));
}
}
avatar
w*g
2
真是气死我了。弄个landscaping吧,竟然要让我提供每颗植物的大小供他们approve,
还要一次性设计完。难道大家做landscaping不是今天种一点明天种一点的?第一次买
房子没有料到HOA这么恶心。大家一定要小心。
avatar
h*6
3
一直觉得考这题很无聊。。
avatar
d*a
4
有HOA的房子是要小心。
好像还没听说HOA怎么好的。
俺家没有HOA,但是有业委会,每年搞几次party,定垃圾公司、neighborhood garage
sale。
avatar
l*m
5
昨天同学google onsite考了这题,所以我就写写。。

【在 h********6 的大作中提到】
: 一直觉得考这题很无聊。。
avatar
s*8
6
HOA往往是一帮老头老太,年轻人哪有时间搞这些破玩艺,所以最后当选的都是老头老
太,这些人的特点就是没事找事,吃饱了撑的,有时候真他妈的希望来个hyper-
inflation,把这些老头子统统归零。

【在 w***g 的大作中提到】
: 真是气死我了。弄个landscaping吧,竟然要让我提供每颗植物的大小供他们approve,
: 还要一次性设计完。难道大家做landscaping不是今天种一点明天种一点的?第一次买
: 房子没有料到HOA这么恶心。大家一定要小心。

avatar
C*U
7
!!!!!!!!!!

【在 l***m 的大作中提到】
: 昨天同学google onsite考了这题,所以我就写写。。
avatar
c*o
8
就是就是,连裸睡都要管
avatar
h*6
9
好吧,瞬间不无聊了。。

【在 l***m 的大作中提到】
: 昨天同学google onsite考了这题,所以我就写写。。
avatar
l*m
10
你感叹我代码太弱了。。。。赶紧给我改改呀。。。

【在 C***U 的大作中提到】
: !!!!!!!!!!
avatar
d*e
11

// move the .length() after null check.
(i

【在 l***m 的大作中提到】
: 你感叹我代码太弱了。。。。赶紧给我改改呀。。。
avatar
l*m
12
嗯,对。是。没检查代码就有各种问题。谢谢啊!还有别得问题没?

【在 d**e 的大作中提到】
:
: // move the .length() after null check.
: (i

avatar
d*e
13
it should be correct.
but i am not so familiar with the rules.
18 -> XVIII
19 -> XIX
can i say 18 == XIIX as well?

【在 l***m 的大作中提到】
: 嗯,对。是。没检查代码就有各种问题。谢谢啊!还有别得问题没?
avatar
l*m
14

No.... 你可以去wiki上看看规则。

【在 d**e 的大作中提到】
: it should be correct.
: but i am not so familiar with the rules.
: 18 -> XVIII
: 19 -> XIX
: can i say 18 == XIIX as well?

avatar
e*s
15
不可以

【在 d**e 的大作中提到】
: it should be correct.
: but i am not so familiar with the rules.
: 18 -> XVIII
: 19 -> XIX
: can i say 18 == XIIX as well?

avatar
e*s
16
我觉得Integer to Roman 要是能用look up table。那不是切菜一样切
avatar
x*n
17
你去看wiki,规则很复杂,要面面俱到

【在 e***s 的大作中提到】
: 我觉得Integer to Roman 要是能用look up table。那不是切菜一样切
avatar
w*o
18
有点罗嗦,这样应该简洁一点:
public static int RomanToInt(String input) {
// null check ...

int pre = map.get(input.charAt(0));
int ret = pre;
for(int i = 1; i < input.length; i++ {
int cur = map.get(input.charAt(i));
ret += cur;
if(cur > pre)
{ret -= pre * 2;pre = 1001;}
else
pre = cur;
}
return ret;
}
avatar
C*U
19
没 是感叹这个题目我写的很长

【在 l***m 的大作中提到】
: 你感叹我代码太弱了。。。。赶紧给我改改呀。。。
avatar
w*x
20

//Turn Roman number to decimal
//I(1), V(5), X(10), L(50), C(100), D(500), M(1000)
int GetNum(char c)
{
if (c == 'I' || c == 'i')
return 1;
else if (c == 'V' || c == 'v')
return 5;
else if (c == 'X' || c == 'x')
return 10;
else if (c == 'L' || c == 'l')
return 50;
else if (c == 'C' || c == 'c')
return 100;
else if (c == 'D' || c == 'd')
return 500;
else if (c == 'M' || c == 'm')
return 1000;

return 0;
}
//compare current digit to previous one,
//if bigger or equal, plus current digit
//if less, minus current digit
int RomanToDec(const char* szNum)
{
assert(szNum);
int nLen = strlen(szNum);
if (nLen == 0)
return 0;
const char* pIter = szNum + nLen - 1;
int nRet = 0;
int nPrev = 0;
while (pIter >= szNum)
{
int nCur = GetNum(*pIter);
if (nCur >= nPrev)
nRet += nCur;
else nRet -= nCur;
nPrev = nCur;
pIter--;
}
return nRet;
}
string intToRoman(int num) {
string table[] = {"M", "CM","D","CD","C","XC","L","XL","X","IX","V","IV"
,"I"};
int values[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
string result;
for(int iter = 0; iter < 13;)
{
if(num >= values[iter])
{
result += table[iter];
num -= values[iter];
}
else
++iter;
}
return result;
}

【在 l***m 的大作中提到】
:
: No.... 你可以去wiki上看看规则。

avatar
w*o
21
倒着来想法很新颖,但好像有问题,比如 IVX = (V - I) + X, not (X - V - I)

const char* pIter = szNum + nLen - 1;
int nRet = 0;
int nPrev = 0;
while (pIter >= szNum)
{
int nCur = GetNum(*pIter);
if (nCur >= nPrev)
nRet += nCur;
else nRet -= nCur;
nPrev = nCur;
pIter--;
}

【在 w****x 的大作中提到】
:
: //Turn Roman number to decimal
: //I(1), V(5), X(10), L(50), C(100), D(500), M(1000)
: int GetNum(char c)
: {
: if (c == 'I' || c == 'i')
: return 1;
: else if (c == 'V' || c == 'v')
: return 5;
: else if (c == 'X' || c == 'x')

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。