兩道題目

Posted 2458697069

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了兩道題目相关的知识,希望对你有一定的参考价值。

第二篇:

给师姐解答问题:

1.为什么Java里的数组的长度是用length,字符串的长度是用string.length();来做的。能解释一下吗?(更高明的文法,数组取长度和字符串取长度,这两个的区别是什么)开始讲java的面向对象,因为array里封装了一个public属性是length,而且这个属性的值是在初始化对象的时候就赋值了的。而string里是封装了一个public方法,这个方法名为length()。

【拓展1】System.out.println()这个方法,你经常用吧,能说一下这句话,那是类,那个属性,那个是方法么?答:system是类。Out是system中封装的属性,println()是out属性里的一个方法。【体现的java里的面向对象,封装,成员和方法】

  1. 解决编程问题【lian*jia2018届】

 

题目:

思路:

    

这个第一步。想法是。如果只有两个区域(2,3区域),那么只用计算本不该在2位置的元素个数就行了,那么就是最终结果。

第二步:如果把2和3看做是一个整体,那么不属于1位置的数据个数就很好计算。

第三步:1位置搞定之后,2位置和3位置,就可以看两个区域。

 

解决问题的结果是:

Sum = (a12+a13)+Math.max(a23,a32);

真的就是soeasy。

代码:

package HuaWei;

 

import java.util.Scanner;

 

import   javax.swing.text.ChangedCharSetException;

 

public class Main {

         public   static void main(String[] args) {

                   Scanner  scanner = new Scanner(System.in);

                   int[]   a = new int[scanner.nextInt()];

                   for   (int i = 0; i < a.length; i++) {

                            a[i]   = scanner.nextInt();

                   }

                   int   sum = change(a);

                   System.out.println(sum);

         }

 

         private   static int change(int[] a) {

                   int   count1 = 0;

                   int   count2 = 0;

                   int   count3 = 0;

                   for   (int i = 0; i < a.length; i++) {

                            if(a[i]==1){

                                     count1++;

                            }else   if (a[i]==2) {

                                     count2++;

                            }else   {

                                     count3++;

                            }

                   }

                   int   a12 =0;//代表2占的1位置的个数

                   int   a13 = 0;//代表3占的1位置的个数

                   int   a21 = 0;//代表1占的2位置的个数

                   int   a23 = 0;//代表3占的2位置的个数

                   int   a31 = 0;//代表1占的3位置的个数

                   int   a32 = 0;//代表2占的3位置的个数

                   for   (int i = 0; i < count1; i++) {

                            if(a[i]==1){

                            }else   if (a[i]==2) {

                                     a12++;

                            }else   {

                                     a13++;

                            }

                   }

                   for   (int i = 0; i < count2; i++) {

                            if(a[i+count1]==1){

                                     a21++;

                            }else   if (a[i+count1]==2) {

                            }else   {

                                     a23++;

                            }

                   }

                   for   (int i = 0; i < count3; i++) {

                            if(a[i+count1+count2]==1){

                                     a31++;

                            }else   if (a[i+count1+count2]==2) {

                                     a32++;

                            }else   {

                            }

                   }

                   int   sum = a12+a13;

                   sum   += Math.max(a23, a32);

                   return   sum;

         }

 

}

 

  1. hua-为的题目:

题目

  

思路:

核心代码

if(c1[i]==c2[i]){

                                     nowCount++;

                                     maxCount   = Math.max(maxCount, nowCount);

                            }else   {

                                     nowCount   = 0;

                            }

 

解法:

package HuaWei;

 

 

/**

 * 陈嘉苗师姐2017.8.16 华为机试

 *   @author load

 *

 */

import java.util.Scanner;

public class FindMatch {

         public   static void main(String[] args) {

                   Scanner  scanner = new Scanner(System.in);

                   //System.out.println(findMatch(scanner.nextLine(),scanner.nextLine()));

                   System.out.println(findMatch(scanner.next(),   scanner.next()));

         }

         public   static int findMatch(String str1,String str2){

                   //1.处理边界情况,长度不等,或者非数值。

                   if   (str1.length()!= str2.length()) {

                            return   -1;

                   }

                   try   {

                            int   i = Integer.parseInt(str1);

                            int   j = Integer.parseInt(str2);

                   }   catch (NumberFormatException e) {

                            return   -1;

                   }

                   //2.主要业务情况

                   char[]   c1= str1.toCharArray();

                   char[]   c2 = str2.toCharArray();

                   int   maxCount = 0;

                   int   nowCount = 0;

                   for   (int i = 0; i < c1.length; i++) {

                            if(c1[i]==c2[i]){

                                     nowCount++;

                                     maxCount   = Math.max(maxCount, nowCount);

                            }else   {

                                     nowCount   = 0;

                            }

                   }

                   return   maxCount < 2 ? 1:maxCount;

         }

 

}

以上是关于兩道題目的主要内容,如果未能解决你的问题,请参考以下文章

poj1191(記憶化搜索)

分享VMware相關題目

學習筆記:Linux常見題目解析分享

[LeetCode] - Add Two Numbers

計蒜課/排澇(Edmond-Karp)

計算客/小教官(xjb)