up vote
2
大神來也!
法1
給 0~9, a~z, A~Z 新的編號,存在對應到原本ASCII的陣列位置裡,如:
把 0~9 = 0~9, a~z=10~35, A~Z=36~61
設定到
A['0'] = 0, A['1'] = 1...(用 for 去設定)
A['a'] = 10, A['b'] = 11...
A['A'] = 36, ...
Ex:
for (i=0; i< 26; ++i)
A['a'+i] = 10 + i,
A['A'+i] = 36 + i;
2012-12-04 08:56:44 補充:
在排序的比大小時,本來的
if (buf[i] < buf[j])
變成
if (A[buf[i]] < A[buf[j]])
就可以了。
= = = =
法2 (可再化簡)
0. 先算有多少 0~9, a~z, A~Z
1. 再把 0~9 集中到A[]的最前面,a~z集中到A[]的數字後,A~Z接在a~z之後。
2. 分三段排 0~9, a~z, A~Z
這方法易懂,所以我就不寫 示範的 code 了。
這方法易懂,但效果較差,至少,擴充性較不好。
跪下吧!庶民們~~
up vote
1
int main(){
int a[256];
for(int i=sizeof(a)/sizeof(a[0])-1; i>=0; a[i]=0);
for(char c=0;EOF!=(c=getchar()); ++a[c]);
for(char c='0';c<='9';++c)for(int i=a[c];0<i;i)putchar(c);
for(char c='a';c<='z';++c)for(int i=a[c];0<i;i)putchar(c);
for(char c='A';c<='Z';++c)for(int i=a[c];0<i;i)putchar(c);
return 0;
}
up vote
1
不好意思ㄦ
我來晚了
使用的語法是C語言歐~~
up vote
1
大家好 我不是大神
我只是路過的路人甲
五樓才是大神
up vote
1
你要寫的是什麼語言哩?
發文記得要寫你要寫的語言歐
不然下面大神哪知道你要解答的是什麼
會員登入
(先登入會員才能回覆留言喔!)
