C语言:时间复杂度为O(1)的两则小程序
程序员文章站
2022-04-23 17:10:37
这两个例子都是用了同一种编程思想:对于字符的操作,char类型最多可以有256个字符,但是可以满足对大小写、数字、其他基本字符的使用。利用字符的ascii码值作为大小为256的数组...
这两个例子都是用了同一种编程思想:对于字符的操作,char类型最多可以有256个字符,但是可以满足对大小写、数字、其他基本字符的使用。利用字符的ascii码值作为大小为256的数组的下标,将要查找的内容/条件填充到数组里,这样通过查看对应下标的内容,即可实现相应操作。
这就是时间复杂度为O(1)的编程思想,这也是基于哈希表的一种,关于哈希表请自己查看。
下面看第一个例子:当输入小写字母a,输出大写字母Z,当输入小写字母b,输出大写字母Y,...当输入小写字母z,输出大写字母A
1 #include<stdio.h> 2 #include<string.h> 3 4 void change(char arr[],int ch){ 5 int i=0; 6 int j=90; 7 for(i=97;i<123;i++){ //对arr[256]中a-z的下标里逐个放入Z-A 8 arr[i]=j--; 9 } 10 printf("%c\n",arr[ch]); 11 } 12 13 int main(){ 14 char arr[256]= {0}; 15 int ch =0; 16 ch=getchar(); 17 change(arr,ch); 18 return 0; 19 }