免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kewenliang
打印 上一主题 下一主题

一道百度笔试题 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2008-09-21 11:34 |只看该作者
谁发一个完整的程序SEE,SEE

论坛徽章:
0
52 [报告]
发表于 2008-09-21 13:05 |只看该作者
原帖由 aliking 于 2008-9-17 18:05 发表


你说的情况确实存在,谢谢!
我当时虽然也考虑到了这一点,但草率的认为这种输入合法性是应该留给调用者处理的。
看了你的回复,我经过仔细考虑,认为这种情况还是应该由被调用者处理的。

修改后的代码 ...



我觉得也可以在while中判断,这样同时也对入参s进行了为空判断。
void lower(char *s)
{
        while (s != NULL && *s) //         {
                ....
        }

个人看法。

论坛徽章:
0
53 [报告]
发表于 2008-09-22 22:59 |只看该作者
今天笔试百度,这一道题一点不会,各位看看:
有一序列Seq=[a,b,...,z,aa,ab,...,az,ba,bb,....,zz,za,zb,....,zzz,....],
现在有一字符串s=[a-z]+(由a-z组成的任意长的字符串),问s是Seq的第几个字符串?
大体意思就这样.

论坛徽章:
0
54 [报告]
发表于 2008-09-23 16:36 |只看该作者
原帖由 bingfeng2hzy 于 2008-9-22 22:59 发表
今天笔试百度,这一道题一点不会,各位看看:
有一序列Seq=[a,b,...,z,aa,ab,...,az,ba,bb,....,zz,za,zb,....,zzz,....],
现在有一字符串s=[a-z]+(由a-z组成的任意长的字符串),问s是Seq的第几个字符串?
大体意 ...


每一个字符串都是啊
我没看明白?

论坛徽章:
0
55 [报告]
发表于 2008-09-23 19:22 |只看该作者
原帖由 以泪洗面 于 2008-9-23 16:36 发表


每一个字符串都是啊
我没看明白?

是啊!我也看不懂.

论坛徽章:
0
56 [报告]
发表于 2008-09-24 13:00 |只看该作者

百度

百度还挺牛。

论坛徽章:
0
57 [报告]
发表于 2008-09-24 20:31 |只看该作者
这个问题不是加32那么简单。我认为要逐个字节的去判断,首先要判断当前字节的ASCII码是不是在字符的范围内,如果不在字符的范围内则跳过两个字节,如果在字符范围内,再判断是不是在大写的字符范围内,如果是那么就加32,如果不是就进行下一个字节的比较

论坛徽章:
0
58 [报告]
发表于 2008-09-25 10:09 |只看该作者
for ( i = 0; i < maxline; i++ )
{
    for ( j = 0; j < strlen( aa ); j++ )
    {
          if ( aa[j] <= 'Z' && aa[j] >= 'A' ) aa[j] += 32;
    }
}


[ 本帖最后由 xwolff 于 2008-9-25 10:11 编辑 ]

论坛徽章:
0
59 [报告]
发表于 2008-09-25 11:06 |只看该作者
原帖由 bingfeng2hzy 于 2008-9-22 22:59 发表
今天笔试百度,这一道题一点不会,各位看看:
有一序列Seq=[a,b,...,z,aa,ab,...,az,ba,bb,....,zz,za,zb,....,zzz,....],
现在有一字符串s=[a-z]+(由a-z组成的任意长的字符串),问s是Seq的第几个字符串?
大体意 ...


看成26进制数计算就可以了。基本实现如下:

  1. int sequence(char* str)
  2. {
  3.         int i,  ret = 0;
  4.         for (i = 0; i < strlen(str); i++)
  5.         {
  6.                 ret *= 26;
  7.                 ret += str[i] - 'a' + 1;
  8.         }
  9.         return ret;
  10. }
复制代码

严谨点可以判断一下字符串的长度、整数溢出等。

[ 本帖最后由 aliking 于 2008-9-25 11:16 编辑 ]

论坛徽章:
0
60 [报告]
发表于 2008-09-25 11:08 |只看该作者
void convert( char *s )
{        int i = 0;
          while ( s )      
         {               
         // 只要是大写字符,最高位肯定不是1               
        if ( s <= 'Z' && s >= 'A' ) s += 32;   
        }
}


[ 本帖最后由 xwolff 于 2008-9-25 11:12 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP