免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kewenliang

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

论坛徽章:
0
发表于 2008-09-21 11:34 |显示全部楼层
谁发一个完整的程序SEE,SEE

论坛徽章:
0
发表于 2008-09-21 13:05 |显示全部楼层
原帖由 aliking 于 2008-9-17 18:05 发表


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

修改后的代码 ...



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

个人看法。

论坛徽章:
0
发表于 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
发表于 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
发表于 2008-09-23 19:22 |显示全部楼层
原帖由 以泪洗面 于 2008-9-23 16:36 发表


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

是啊!我也看不懂.

论坛徽章:
0
发表于 2008-09-24 13:00 |显示全部楼层

百度

百度还挺牛。

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

论坛徽章:
0
发表于 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
发表于 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
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP