兩道題目

第二篇:

给师姐解答问题:

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;

}

}

时间: 2024-10-08 10:28:47

兩道題目的相关文章

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

學習題目分享解答 --此篇博客感謝老男孩老師教學,才得以學習完成此篇博客-- 描述linux系統的啟動過程?     (企業面試題) (1)簡單描述(口頭) 1.開機BIOS自檢    --->檢查硬件是否正常   自檢完後 根據啟動順序,教給下一個設備處理 2.MBR引導    ---->(硬盤) 硬盤0柱面0磁道1扇區的前446byte      (1扇區 512字節)   剩下的(512-446 =66)    其中64用來分區表(4個--->意思是4個主分區或4個擴展分區)  最

分享VMware相關題目

VMnet1是主机模式.是一个Host-Only网络模式 192.168.1.254/24VMnet8是NAT模式.是一个NAT方式,最简单的组网方式VMnet6是手动设置的(主机.net.内部) 10.0.0.8/24 Bluetooth 169.254.0.1/16 169.254.X.X是Windows操作系统在DHCP信息租用失败时自动给客户机分配的IP地址..Wi?Fi 172.16.0.2/24Local 172.21.20.2/24 172.16.0.0 – 172.31.255.

[題解](貪心/堆)luogu_P2107小Z的AK計劃

清明講過一道類似的,難度略大的:P3545 [POI2012]HUR-Warehouse Store 兩道題類似,都是暫時先把前面的加進候選集合里,如果超出限制的話就拿現在這個和前面的交換, 相當於不選前面那個選當前這個,應該是比較好的思想 這道題還有一個就是如果最優解要你走到那個點,那麼中間的路程是不可省略的,所以貪心時大可不考慮 反正實質上是個dp,取的是最大值 #include<bits/stdc++.h> #define ll long long using namespace std

hdu-3699-Aragorn&#39;s Story-樹鏈剖分模板題

樹鏈剖分學習blog:http://blog.csdn.net/jiangshibiao/article/details/24669751 關於這題的學習blog:http://blog.csdn.net/acdreamers/article/details/10594121 下面來說說樹鏈剖分の我的理解. 作為一個樹鏈剖分的初學者,看到個大牛的博客里一上來就描述做法,稍顯得有點吃不消,嚼了好幾天的資料才總算看懂.作為一個初學者,以初學的狀態,透過現象看本質才能更好地上手,因為只有知道它能做什麼

第五章-習題(1-11)待續

5-1 代碼對齊(UVa 1593) 不難,按行讀取,然後stringstream輸入到vector<string>那裏去,算出行最大單詞數,再算出列單詞最大寬度,然後就可以格式化輸出了: #include<iostream> #include<string> #include<algorithm> #include<vector> #include<cstdio> #include<sstream> using name

POJ 2444 The Accomodation of Students 黑白染色+二分匹配 簡單題

有n個人,編號為1~n,其中有m對朋友,現在給出m對朋友,問能不能把這n個人分成2個組,使得每一個組裡面的人都是互相不認識的? 若不可以,輸出No 若可以,問現在將認識的人兩兩配對,輸出最多可以有多少對 說白了,這道題就是首先要判斷是不是二分圖,不是的話輸出No,是的話輸出最大匹配 判斷二分圖:用黑白染色法,注意,整個關係圖有可能是不連通的,所以要遍歷所有的點 這裡求最大匹配不是用匈牙利算法,而是直接轉化為最大流 1 #include<cstdio> 2 #include<cstring

假如我活了兩千歲我的祖國她是誰?(转)

這真的是一個17歲的女學生所著? 17歲女生震撼演講 ---假如我活了兩千歲我的祖國她是誰? 一所高中舉辦〝熱愛祖國〞的主題演講,這是一位少女的演講稿,其清醒認識超過我們大部分成年人,中國下一代有希望! 下面是演講全文: 老師們,同學們大家好:我是高一(6)班的王珂兒,我今天的演講題目是<假如我活了兩千歲,我的祖國她是誰?> 我沒有他們慷慨的語調,也沒有他們激揚的熱情,對於〝祖國〞二字,我有的是我自己的思考,我覺得我們社會不缺有知識的頭腦,缺的是有頭腦的人. 我在想:假如我活了兩千歲,我的祖國

第14、15週PTA題目的處理

題目1 選擇法排序 1.實驗代碼 #include <stdio.h> #include <stdlib.h> int main() { int n,index,exchange,i,j; scanf("%d\n",&n); int num[n]; for(index=0;index<n;index++) scanf("%d ",&num[index]); for(i=0;i<n-1;i++) { for(j=i+

[題解/考試]國王飲水記

前言:今日又考試了,一道斐波那契的入門題因為沒有特判0錯了一個點,兩道不會,結果連rk7.8都沒拿到, 前天把鉛筆盒丟掉了,裡面有筆,耳機和U盤.U盤裡有做過的題,一些模板,寒假講的東西和課件,6個遊戲,一些安裝包和一些網址. 發現丟掉以後就變得特別絕望,極度悲傷,可是這就是命運啊,你不接受那就去死好了. 人活著本來就沒有什麼意義可言,尋找意義自然也是不可能尋找到的了. 意義什麼的都是小孩子的事情,所以只能這樣活著了. 與其如此那還不如把U盤裡的東西裝到腦子裡,也不必擔心什麼了. n個點,按順序