java 笔试算法题,面试时要求手写算法

  java 笔试算法题,面试时要求手写算法

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  1.统计一篇英文文章单词个数。

  公共类字数统计{

  公共静态void main(String[] args) {

  try(FileReader fr=new FileReader( a . txt ){

  int counter=0;

  布尔状态=假;

  国际货币联盟

  while((currentChar=fr.read())!=-1) {

  if(current char== current char== \ n

   current char== \ t current char== \ r ){

  状态=假

  }

  else if(!州){

  状态=真

  柜台;

  }

  }

  System.out.println(计数器);

  }

  捕捉(异常e) {

  e。printstacktrace();

  }

  }

  }补充:这个程序可能有很多种写法,这里选择的是丹尼斯里奇和布赖恩w克尼根老师在他们不朽的著作《The C Programming Language》 中给出的代码,向两位老师致敬。下面的代码也是如此。

  2.输入年月日,计算该日期是这一年的第几天。

  公开课日计数{

  公共静态void main(String[] args) {

  int[][] data={

  {31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

  {31,29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

  };

  扫描仪sc=新扫描仪(系统。在);

  System.out.print(请输入年月日(1980 11 28): );

  int year=sc。nextint();

  int month=scnextint();

  int date=sc。nextint();

  int[]days of month=data[(year % 4==0 year % 100!=0 年% 400==0)?1 : 0];

  int sum=0;

  for(int I=0;我月-1日;i ) {

  sum=每月的天数[I];

  }

  总和=日期;

  系统。出去。println(sum);

  即close();

  }

  }3.回文素数:所谓回文数就是顺着读和倒着读一样的数(例如:11,121,1991…),回文素数就是既是回文数又是素数(只能被1和自身整除的数)的数。编程找出119999之间的回文素数。

  公众的类回文字符数{

  公共静态void main(String[] args) {

  for(int I=11;i=9999i ) {

  如果(is prime(I)是palindomic(I)){

  系统。出去。println(一);

  }

  }

  }

  公共静态布尔isPrime(int n) {

  for(int I=2;I=数学。sqrt(n);i ) {

  if(n % i==0) {

  返回错误的

  }

  }

  返回真实的

  }

  public static boolean ispalindromec(int n){

  int temp=n;

  int sum=0;

  而(温度0) {

  总和=总和* 10温度% 10

  temp/=10;

  }

  return sum==n;

  }

  }4.全排列:给出五个数字12345的所有排列。

  公共类全置换{

  public static void perm(int[]list){

  烫发(列表,0);

  }

  私有静态void perm(int[] list,int k) {

  if (k==list.length) {

  for(int I=0;i list.lengthi ) {

  系统。出去。打印(列表[I]);

  }

  系统。出去。println();

  }否则{

  for(int I=k;i list.lengthi ) {

  swap(list,k,I);

  烫发(列表,k1);

  swap(list,k,I);

  }

  }

  }

  私有静态空的交换(int[] list,int pos1,int pos2) {

  int temp=list[pos 1];

  列表[位置1]=列表[位置2];

  list[pos 2]=temp;

  }

  公共静态void main(String[] args) {

  int[] x={1,2,3,4,5 };

  烫发;

  }

  }5.对于一个有N个整数元素的一维数组,找出它的子数组(数组中下标连续的元素组成的数组)之和的最大值。

  下面给出几个例子(最大子数组用粗体表示):

  数组:{ 1, -2, 3,5, -3, 2 },结果是:8

  2) 数组:{ 0, -2, 3, 5, -1, 2 },结果是:9

  3) 数组:{ -9, -2,-3, -5, -3 },结果是:-2

  可以使用动态规划的思想求解:

  公共类MaxSum {

  私有静态int max(int x,int y) {

  返回x y?x:y;

  }

  public static int maxSum(int[]array){

  int n=数组。长度;

  int[]start=new int[n];

  int[]all=new int[n];

  all[n-1]=start[n-1]=array[n-1];

  for(int I=n-2;I=0;我- ) {

  start[i]=max(array[i],array[I]start[I 1]);

  all[i]=max(start[i],all[I 1]);

  }

  返回所有[0];

  }

  公共静态void main(String[] args) {

  int[] x1={ 1,-2,3,5,-3,2 };

  int[] x2={ 0,-2,3,5,-1,2 };

  int[] x3={ -9,-2,-3,-5,-3 };

  系统。出去。println(maxSum(x1));//8

  系统。出去。println(maxSum(x2));//9

  系统。出去。println(maxSum(x3));//-2

  }

  }6.用递归实现字符串倒转

  公共类StringReverse {

  公共静态字符串反向(字符串来源){

  if(orig instr==null orig instr。length()==1){

  返回originStr

  }

  返回反向(原点字符串。substring(1))源字符串。charat(0);

  }

  公共静态void main(String[] args) {

  系统。出去。println(反转( hello );

  }

  }7.输入一个正整数,将其分解为素数的乘积。

  公共类分解整数{

  私有静态列表integer list=new ArrayListInteger();

  公共静态void main(String[] args) {

  System.out.print(请输入一个数: );

  扫描仪sc=新扫描仪(系统。在);

  int n=sc。nextint();

  分解数(n);

  系统。出去。print(n =);

  for(int I=0;我列出。size()-1;i ) {

  系统。出去。打印(列表。get(I) * );

  }

  系统。出去。println(列表。获取(列表。size()-1));

  }

  公共静态void分解器编号(int n){

  if(isPrime(n)) {

  列表。添加(n);

  列表。添加(1);

  }

  否则{

  数学。sqrt(n));

  }

  }

  public static void doIt(int n,int div) {

  if(isPrime(div) n % div==0) {

  列表。add(div);

  分解数(n/div);

  }

  否则{

  doIt(n,div-1);

  }

  }

  公共静态布尔isPrime(int n) {

  for(int I=2;I=数学。sqrt(n);i ) {

  if(n % i==0) {

  返回错误的

  }

  }

  返回真实的

  }

  }8、一个有n级的台阶,一次可以走1级、2级或3级,问走完n级台阶有多少种走法。

  公共类GoSteps

  公共静态int计数方式(int n){

  if(n 0) {

  返回0;

  }

  else if(n==0) {

  返回1;

  }

  否则{

  返回计数路(n - 1)计数路(n - 2)计数路(n-3);

  }

  }

  公共静态void main(String[] args) {

  系统。出去。println(计数方式(5));//13

  }

  }9.写一个算法判断一个英文单词的所有字母是否全都不同(不区分大小写)

  公共类AllNotTheSame {

  公共静态布尔判断(字符串str) {

  字符串temp=str。tolowercase();

  int[]字母计数器=new int[26];

  for(int I=0;我是临时工。长度();i ) {

  int index=temp。charat(I)-a;

  字母计数器[索引];

  if(letterCounter[index] 1) {

  返回错误的

  }

  }

  返回真实的

  }

  公共静态void main(String[] args) {

  系统。出去。println(judge( hello ));

  System.out.print(judge(微笑));

  }

  }10.有一个已经排好序的整数数组,其中存在重复元素,请将重复元素删除掉,例如,A= [1, 1, 2, 2, 3],处理之后的数组应当为A= [1, 2, 3]。

  公共类删除重复{

  public static int[]remove duplicates(int a[]){

  if(a.length=1) {

  返回a;

  }

  int index=0;

  for(int I=1;我是洛杉矶人。长度;i ) {

  if(a[index]!=a[i]) {

  a[index]=a[I];

  }

  }

  int[]b=new int[index 1];

  System.arraycopy(a,0,b,0,b . length);

  返回b;

  }

  公共静态void main(String[] args) {

  int[] a={1,1,2,2,3 };

  a=删除重复项(a);

  系统。出去。println(数组。tostring(a));

  }

  }11.给一个数组,其中有一个重复元素占半数以上,找出这个元素。

  公共类FindMost {

  public static T T find(T[] x){

  t温度=空

  for(int i=0,n次=0;我x。长度;i ) {

  if(nTimes==0) {

  temp=x[I];

  ntitimes=1;

  }

  否则{

  if(x[i].等于(临时)){

  nTimes

  }

  否则{

  ntitimes-;

  }

  }

  }

  返回温度;

  }

  公共静态void main(String[] args) {

  String[]strs={hello , kiss , hello , hello , maybe };

  系统。出去。println(find(strs));

  }

  }12.编写一个方法求一个字符串的字节长度?

  public int getword count(String s){

  int length=0;

  for(int I=0;国际标准长度();我)

  {

  int ascii=字符。codepointat(s,I);

  if(ascii=0 ascii=255)

  长度;

  其他

  长度=2;

  }

  返回长度;

  }以上就是爪哇岛笔试手写算法面试题大全含答案的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: