The C Programming Language 2nd Edition Execise5-4 Answer

Exercise 5-4. Write the function strend(s,t), which returns 1 if the string t occurs at the
end of the string s, and zero otherwise.

简单问题,复习语言。

最直接的想法:

 

//The C Programming Language 2nd Edition Execise5-4 Answer
//by DaNmarner
//http://blog.youkuaiyun.com//DaNmarner
#include<stdio.h>
int strend(char *s,char *t)
{
 char *ps,*pt;
 while (*s != '/0'){
  for(ps = s,pt = t;*ps == *pt;ps++,pt++)
   if(*ps == '/0' || *pt == '/0') break;
  if (*ps == '/0' && *pt == '/0') return 1;
  s++;
 }
 return 0;
}

但其实这个算法效率很低,O(N^2)。下面这个就好多了:

 

//The C Programming Language 2nd Edition Execise5-4 Answer
//by DaNmarner
//http://blog.youkuaiyun.com//DaNmarner

#include<stdio.h>
#include<string.h>
int strend2(char *s,char *t)
{
 int ls = strlen(s);
 int lt = strlen(t);
 if (lt > ls) return 0;
 while(s[--ls] == t[--lt] && lt >= 0);
 if (lt == -1) return 1;
 else return 0;
}

这就是O(n)了~

name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1391084545775812&dt=1187587170293&lmt=1187587166&format=468x15_0ads_al&output=html&correlator=1187587170273&channel=7913117752&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2FAdministrator%2F%E6%A1%8C%E9%9D%A2%2F优快云%E6%96%87%E7%AB%A0%E9%A1%B6%E9%83%A8%E5%AF%BC%E8%88%AA.htm&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=000000&color_border=FFFFFF&ga_vid=254352278.1187587170&ga_sid=1187587170&ga_hid=2130092920&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="468" scrolling="no" height="15" allowtransparency="allowtransparency">

name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1391084545775812&dt=1187587040446&lmt=1187587036&format=468x60_as&output=html&correlator=1187587040416&channel=8802996721&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2FAdministrator%2F%E6%A1%8C%E9%9D%A2%2F优快云%E6%96%87%E7%AB%A0%E5%BA%95%E9%83%A8.htm&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=000000&color_border=FFFFFF&ad_type=text&ga_vid=1630047283.1187587040&ga_sid=1187587040&ga_hid=4528641&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency="allowtransparency">

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值