复杂的c语言程序1,C语言:时间复杂度为O(1)的两则小程序

这篇博客探讨了如何使用ASCII码作为哈希表的下标,实现O(1)时间复杂度的字符操作。通过创建一个大小为256的数组,并填充特定字符映射,例如将小写字母映射到对应的大写字母,可以快速地进行字符转换。此外,还介绍了利用类似思想判断字符是否存在于字符串中,通过将字符串中出现的字符位置标记为1,达到高效的查找目的。
摘要由CSDN通过智能技术生成

这两个例子都是用了同一种编程思想:对于字符的操作,char类型最多可以有256个字符,但是可以满足对大小写、数字、其他基本字符的使用。利用字符的ascii码值作为大小为256的数组的下标,将要查找的内容/条件填充到数组里,这样通过查看对应下标的内容,即可实现相应操作。

这就是时间复杂度为O(1)的编程思想,这也是基于哈希表的一种,关于哈希表请自己查看。

下面看第一个例子:当输入小写字母a,输出大写字母Z,当输入小写字母b,输出大写字母Y,...当输入小写字母z,输出大写字母A

1 #include

2 #include

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=2587FBE5F632150AD4A73CE4820CA228591A9DA98618543E89850995E15B82B57A81770828B792FD7967ACD00C89A150FFCFE9A7448F17B9DC97BC45005DD1B884D090CBC16ED3697DB17C6B6CB8A40ABC7F642A6B9F0E682ADF66B4FC1ADAA7&mailid=ZL0229-KXgizaDwo5mTGnkvLk5pS59&sid=eivVRisnq5GPUzBm&net=3785984010

viewfile?f=2587FBE5F632150AD4A73CE4820CA228591A9DA98618543E89850995E15B82B57A81770828B792FD7967ACD00C89A150FFCFE9A7448F17B9E33A91F993EB567C2378F32B6A2008F5473A8FEFDE5DBEE71F316FAC86D7F831F57D96EFB2FCFA10&mailid=ZL0229-KXgizaDwo5mTGnkvLk5pS59&sid=eivVRisnq5GPUzBm&net=3785984010

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值