腾讯4月3号机试
2016-04-07 00:05
113 查看
腾讯4月3号,技术算法题两道,一个求最大回文字符串长度,一个输出蛇形矩阵,格式为从上向下每一行打印输出,每行之间不输出空格
第一次发帖,如有错误,请各位指正
分析:第一道,求最大回文字符串长度,我们先可以求出最大的回文字符串,我这里主要是通过字符串的截取,判断新的字符串是否为回文字符串,如果是,取出长度,然后继续查找回文字符串,直至找到最长的为止
第二道:我的思路主要是从外到内,每一个都是一个正方形,把正方形输出来就行
第一次发帖,如有错误,请各位指正
分析:第一道,求最大回文字符串长度,我们先可以求出最大的回文字符串,我这里主要是通过字符串的截取,判断新的字符串是否为回文字符串,如果是,取出长度,然后继续查找回文字符串,直至找到最长的为止
package com.firstChart; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class LongestPalindromicSubString1 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //Scanner sc=new Scanner(System.in); System.out.println("请输入字符串:"); //String s1=sc.nextLine(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String s1=br.readLine(); System.out.println("最长回文字符串长度为:"+longestPalindrome(s1)); } public static int longestPalindrome(String s){ int maxPalinLength=0; String longestPalindrome=null; int length=s.length(); for(int i=0;i<length;i++){ for(int j=i+1;j<length;j++){ int len=j-i; String curr=s.substring(i, j+1); if(isPalindrome(curr)){ if(len>maxPalinLength){ longestPalindrome=curr; maxPalinLength=len; } } } } return longestPalindrome.length(); } public static boolean isPalindrome(String s){ for(int i=0;i<s.length();i++){ if(s.charAt(i)!=s.charAt(s.length()-i-1)){ return false; } } return true; } }
第二道:我的思路主要是从外到内,每一个都是一个正方形,把正方形输出来就行
package com.firstChart; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class SnakeDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub //Scanner sc=new Scanner(System.in); System.out.println("请输入蛇形矩阵的行列数:"); //int n=sc.nextInt(); //snake(n); InputStreamReader input=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(input); String s=br.readLine(); int n=Integer.parseInt(s); //} //public static void snake(int n){ int a=1;int b; int[][] array=new int ; if(n%2==0){ b=n/2; }else{ b=n/2+1; } for(int i=0;i<b;i++){ for(int j=i;j<n-i;j++){ array[i][j]=a; a++; } for(int k=i+1;k<n-i;k++){ array[k][n-i-1]=a; a++; } for(int l=n-i-2;l>=i;l--){ array[n-i-1][l]=a; a++; } for(int m=n-i-2;m>i;m--){ array[m][i]=a; a++; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(array[i][j]+" "); } } //} } }
相关文章推荐
- PHP的PDO常用类库实例分析
- 人脸识别测颜值、测脸龄、测相似度微信接口
- PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
- PHP中PDO的事务处理分析
- 初识ThinkPHP控制器
- MySQL数据库使用mysqldump导出数据详解
- 基于javascript bootstrap实现生日日期联动选择
- jQuery实现简单滚动动画效果
- js仿QQ中对联系人向左滑动、滑出删除按钮的操作
- jquery编写Tab选项卡滚动导航切换特效
- javascript模块化简单解析
- jQuery动态添加<input type="file">
- 分离与继承的思想实现图片上传后的预览功能:ImageUploadView
- 详解AngularJS 模态对话框
- AngularJs 弹出模态框(model)
- 浅析JS原型继承与类的继承
- javascript原型继承工作原理和实例详解
- js类式继承与原型式继承详解
- js实现商品抛物线加入购物车特效
- JavaScript数据推送Comet技术详解