第二篇:
给师姐解答问题:
1.为什么Java里的数组的长度是用length,字符串的长度是用string.length();来做的。能解释一下吗?(更高明的文法,数组取长度和字符串取长度,这两个的区别是什么)开始讲java的面向对象,因为array里封装了一个public属性是length,而且这个属性的值是在初始化对象的时候就赋值了的。而string里是封装了一个public方法,这个方法名为length()。
【拓展1】System.out.println()这个方法,你经常用吧,能说一下这句话,那是类,那个属性,那个是方法么?答:system是类。Out是system中封装的属性,println()是out属性里的一个方法。【体现的java里的面向对象,封装,成员和方法】
- 解决编程问题【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; } } |
- 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; } } |