这两个例子都是用了同一种编程思想:对于字符的操作,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 }

 第二个例子:判读一个字符在不在一个字符串里

viewfile?f=2587FBE5F632150AD4A73CE4820CA

viewfile?f=2587FBE5F632150AD4A73CE4820CA

对字符串中出现的字符对应的数组元素位置置1,当输入的字符ascii码作为下标的数组元素值为1是找到,为0时没找到。