Java 7、236 233 229バイト
int c(String s){String x=" 一二三四五六七八九十百";int l=s.length(),i=x.indexOf(s.charAt(l-1)),j=x.indexOf(s.charAt(0)),q=j*100;return l<2?i:l<3?i==10?j*10:i>10?q:10+i:l<4?j*10+i:l<5?q+i:q+i+x.indexOf(s.charAt(2))*10;}
Ungolfed&test code:
ここで試してください。
class M{
static int c(String s){
String x = " 一二三四五六七八九十百";
int l = s.length(),
i = x.indexOf(s.charAt(l-1)),
j = x.indexOf(s.charAt(0));
if(l<2) return i; // 1-10
if(l<3){
if(i==10) return j*10; // 20,30,40,50,60,70,80,90
if(i>10) return j*100; // 100,200,300,400,500,600,700,800,900
return 10+i; // 11-19
}
if(l<4) return j*10+i; // 21-29,31-39,41-49,51-59,61-69,71-79,81-89,91-99
if(l<5) return j*100+i; // 101-109,201-209,301-309,401-409,501-509,601-609,701-709,801-809,901-909
return j*100+i+x.indexOf(s.charAt(2))*10; // 111-119,121-129,131-139,...,971-979,981-989,991-999
}
public static void main(String[] a){
System.out.println(c("一"));
System.out.println(c("二"));
System.out.println(c("三"));
System.out.println(c("四"));
System.out.println(c("五"));
System.out.println(c("六"));
System.out.println(c("七"));
System.out.println(c("八"));
System.out.println(c("九"));
System.out.println(c("十"));
System.out.println(c("十一"));
System.out.println(c("二十四"));
System.out.println(c("八十三"));
System.out.println(c("九十"));
System.out.println(c("一百"));
System.out.println(c("二百三十一"));
System.out.println(c("八百零三"));
System.out.println(c("九百九十九"));
}
}
出力:
1
2
3
4
5
6
7
8
9
10
11
24
83
90
100
231
803
999
503し、380?