Chinaunix首页 | 论坛 | 博客
  • 博客访问: 647352
  • 博文数量: 139
  • 博客积分: 2655
  • 博客等级: 少校
  • 技术积分: 1723
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-02 16:03
文章分类

全部博文(139)

文章存档

2013年(2)

2011年(17)

2010年(14)

2009年(86)

2008年(20)

分类:

2009-09-27 19:41:29

关于字符串的翻转的问题,在求职面试时遇到的比较多.当时自己也总结一些,今天又在smallfish的blog中看到,故再次小结下

这个问题的关键是怎么定位字符的问题,能定位了,啥都好办了
比如字符串"linewer"
(1)C解法: (i)数组中存放(ii)一指针指向的字符串, 用两个指针,一个指向头,一个指向尾,递减比较即可办到
   还搜到个递归的解法:
 //void test()
//{

// int c = getchar();

// if (c != '\n')

// test();

// putchar(c); 

//}

//

//int main(int argc, char *argv[])

//{

// test();

// return 0;

//}

int main()
{
    int c = getchar();
    if (!= '\n')
        main();
    putchar(c);
    return 0;
}

2)linux的一个命令  rev "linewer"
 
 (3) str="linewer";num=${#str};while [ $num -ge 0 ];do echo -n ${str:$num:1}; num=$(($num -1));done

 (4) perl -e '$str="linewer"; print join "",reverse((split "",$str))' 

  (5) python -c 'str="linewer"; str=list(str); str.reverse(); print "".join(str)'  #这个和上面的perl其实是一样的

  (6)  python -c 'str="linewer"; print str[::-1]'  #python风格的
 
 (7)  python -c  'str="linewer";print  reduce(lambda x,y:y+x ,str)'  这个虽是python的写法,应该算是函数式编程Haskell等的解法!

 (8) 这个scheme的没看懂。。。。。。。。

(define (Reverse x) (define (f x y) (if (null? x) y (f (cdr x) (cons (car x) y)))) (f x `()))


阅读(1480) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~