例 one, two, three, four, five共有3 + 3 + 5 + 4 + 4 = 19个字母。
求英文 1 到1000 共有多少个字母。不考虑空格和连接符

解决方案 »

  1.   


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

  2.   

    哈哈,这题笑死我了
    不用全列出来,还是有规律的
    1到20的全列出来,然后twenty,thirty,......,ninety,hundred,thousand,and
    总结下规律,可以用循环搞定顺带再鄙视下出题目的老师
      

  3.   

    说下大概思路
    做个基本数词表,保存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();
    }
      

  4.   

    闲着写了段代码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();
        }    
    }
      

  5.   

    确实,这种题目没有任何意义。可以直接加进StringBuffer,然后算长度~~
      

  6.   

    那就麻烦楼上帮这些个字母慢慢慢慢慢慢的输入到StringBuffer,再算长度了(21224),太感谢楼上了,等你输完,黄花菜都凉了,好思路啊。
      

  7.   

    请楼上注意说话语气,毕竟那也是思路。
    上面说的都可以。如果嫌不好理解的话,也可以写多个for循环,把有规律的放一起,至于规律,自己列几行就能发现好几条规律的。