计算英文字母数

anminliu 2011-07-26 05:57:33
例 one, two, three, four, five共有3 + 3 + 5 + 4 + 4 = 19个字母。
求英文 1 到1000 共有多少个字母。不考虑空格和连接符
...全文
214 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
火光闪耀 2011-07-26
  • 打赏
  • 举报
回复
请楼上注意说话语气,毕竟那也是思路。
上面说的都可以。如果嫌不好理解的话,也可以写多个for循环,把有规律的放一起,至于规律,自己列几行就能发现好几条规律的。
dc老师 2011-07-26
  • 打赏
  • 举报
回复
先找1到1000英文的规律吧 汗
anminliu 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 walkman_22 的回复:]

确实,这种题目没有任何意义。

可以直接加进StringBuffer,然后算长度~~
[/Quote]
那就麻烦楼上帮这些个字母慢慢慢慢慢慢的输入到StringBuffer,再算长度了(21224),太感谢楼上了,等你输完,黄花菜都凉了,好思路啊。
walkman_22 2011-07-26
  • 打赏
  • 举报
回复
确实,这种题目没有任何意义。

可以直接加进StringBuffer,然后算长度~~
zhouxingyu896 2011-07-26
  • 打赏
  • 举报
回复
向楼上的
学习
学习
qybao 2011-07-26
  • 打赏
  • 举报
回复
闲着写了段代码

class Matrix {
public static final String[] baseTable = {
"zero", "one", "tow", "three", "four", "five",
"six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen", "twenty",
"", "", "", "", "", "", "", "", "", "thirty",
"", "", "", "", "", "", "", "", "", "fourty",
"", "", "", "", "", "", "", "", "", "fifty",
"", "", "", "", "", "", "", "", "", "sixty",
"", "", "", "", "", "", "", "", "", "seventy",
"", "", "", "", "", "", "", "", "", "eighty",
"", "", "", "", "", "", "", "", "", "ninety"
};

public static final String[] unitTable = {"hundred", "thousand"};

public static void main(String[] args) {
int sum = 0;
for (int i=1; i<=1000; i++) {
String s = analyze(i);
System.out.println(s);
sum += s.length();
}
System.out.println(sum);
}

public static String analyze(int num) {
if (num < 0) {return "";}

StringBuilder buf = new StringBuilder();
if (num < 20) {
return baseTable[num];
} else if (num < 100) {
if (num%10 == 0) {
buf.append(baseTable[num]);
} else {
buf.append(baseTable[num-num%10]);
buf.append(baseTable[num%10]);
}
} else if (num < 1000) {
buf.append(baseTable[num/100]).append(unitTable[0]);
if (num%100 != 0) {
buf.append("and");
buf.append(analyze(num%100));
}
} else if (num < 10000) {
buf.append(baseTable[num/1000]).append(unitTable[1]);
if (num%1000 != 0) {
buf.append("and");
buf.append(analyze(num%1000));
}
}

return buf.toString();
}
}
qybao 2011-07-26
  • 打赏
  • 举报
回复
说下大概思路
做个基本数词表,保存1-20,30,40,50,60,70,80,90的英文单词
String[] baseTable = {"zero", "one", "tow"...so on}; //数组最好为100,按位置分配
做个单位数次表,保存100,1000
String[] unitTable = {"hundred", "thousand"};
写个方法解析数字
String analyze(int num) {
int[] dig = new int[String.valueOf(num).length];
int idx = dig.length-1;
while (num > 0) {
dig[idx--] = num%10;
num /= 10;
}
StringBuilder buf = new StringBuilder();
switch (dig.length) {
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
case 4: //这里只大概写下4位数这里的思路,其他LZ自己写吧
buf.append(baseTable[dig[0]]).append(unitTable[1]).append("and");
if (dig[1] > 0) {buf.append(baseTable[dig[1]]).append(unitTable[0]).append("and");}
if (dig[2] > 0) {buf.append(baseTable[dig[2]]);}
if (dig[3] > 0) {buf.append(baseTable[dig[3]]);}
break;
default:
...
break;
}
return buf.toString();
}

主程序
int sum = 0;
for (int i=1; i<=1000; i++) {
sum += analyze(i).length();
}
飞跃颠峰 2011-07-26
  • 打赏
  • 举报
回复
哈哈,这题笑死我了
不用全列出来,还是有规律的
1到20的全列出来,然后twenty,thirty,......,ninety,hundred,thousand,and
总结下规律,可以用循环搞定

顺带再鄙视下出题目的老师
剑神一笑 2011-07-26
  • 打赏
  • 举报
回复

瀑布汗 这题主要是考英语呢
你先把1到1000的英文列出来呗
数字母还不好说
replace("[\\s\\u3000\\xA0\\t]+","");//去掉全部空格
replace(",","");//去掉逗号
然后.length()

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧