Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113115
  • 博文数量: 15
  • 博客积分: 152
  • 博客等级: 入伍新兵
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-29 17:10
文章分类

全部博文(15)

文章存档

2017年(1)

2015年(1)

2013年(8)

2012年(5)

分类: Python/Ruby

2012-08-10 14:45:53

百度知道里看到这个题目的,网上有JAVA的代码,试着用python重写了一遍。python编程 求最大的‘镜子’组 比如{1, 2, 3, 8, 9, 3, 2, 1} 是 3 ( {1, 2, 3} 部分). return最大数。以下是网上找到的java代码。

点击(此处)折叠或打开

  1. public int maxMirror(int[] nums) {
  2.   int[] reverse = null;
  3.   int max = 0;
  4.   for(int i = 0; i < nums.length; i++) {
  5.      for(int k = 0; k < nums.length; k++) {
  6.         if(i > k) {
  7.   } else {
  8.         reverse = reverseSection(nums, i, k);
  9.         if(searchFor(reverse, nums)) {
  10.            if(reverse.length > max) { max = reverse.length; }
  11.         }
  12.      }
  13.      }
  14.   }
  15.   
  16.   return max;
  17. }

  18. public int[] reverseSection(int[] nums, int begin, int end) {
  19.    int[] nArray = new int[end - begin + 1];
  20.    int numbs = end - begin;
  21.    for(int i = begin; i <= end; i++) {
  22.       nArray[numbs] = nums[i];
  23.       numbs--;
  24.    }
  25.    return nArray;
  26. }

  27. public boolean searchFor(int[] reverse, int[] nums) {
  28. int index = 0;
  29. boolean check = false;
  30.         for(int i = 0; i < nums.length; i++) {
  31. if(nums[i] == reverse[index]) {
  32. index++;

  33. if(index >= reverse.length) {
  34. return true;
  35. }
  36. } else {
  37. index = 0;
  38. }
  39. }
  40. return false;
乍一看,觉得问题很复杂,水平有限,代码量可能比较多,自己一个人不太可能在短时间内完成,没想到代码竟然这么短,六行代码就搞定了,py的确很强大。

点击(此处)折叠或打开

  1. def maxmirror(a):
  2.     b = [a[i:i+j] for j in range(len(a),0,-1) for i in range(len(a)-j+1)]
  3.     for i in b:
  4.         if list(reversed(i)) in b:
  5.             return len(i)
  6.     return 0

  7. if __name__ == '__main__':
  8.     b = [[21,22,9,8,7,6,23,24,6,7,8,9,25,7,8,9],[1,2,1,20,21,1,2,1,2,23,24,2,1,2,1,25],[1,2,3,2,1],[1,2,3,3,8],[1,2,7,8,1,7,2],[1,1,1],[1],[],[9,1,1,4,2,1,1,1]]
  9.     for a in b:
  10.         print(a,'→', maxmirror(a))

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