先看看筆試的兩道編程題:第一道完全沒有思路,哪位有思路的,麻煩寫出來,給我留言哈!
編程題一:
小B最近迷上了字符串處理技術,他設計了各種處理方式,並計算字符串的屬性。這次也不例外,他定義了一種新的字符置換方式。小B研究的字符串由ASCII碼字母和“.”構成,這次的研究對象是“.”。他關心的對象是字符串中出現的連續兩個“.”。若每次操作把其中最開始的連續兩個“.”以一個“”替代,則可以將函數f(s) 定義為使得串中不出現連續兩個“.”的最小置換次數。
現考慮m個字符替換操作,每次將指定位置的字符替換為給定的字符,求替換后函數f(s)的值。
輸入有若干組,每組的第一行為兩個整數n和m,1<= n,m<=300000,表示字符串的長度和字符替換操作的次數。第二行為所給的字符串,隨后緊跟m行操作,每行由一個正整數x和一個字母c構成,表示將字符串中位置m處的字符置換為字母c。 對每組輸入的每個置換操作,在單獨的行中輸出函數f(s)的結果
編程題二:
為考驗各自的數學能力,小B和小A經常在一起玩各種數值游戲,這一次他們又有了一種新玩法。每人從指定的數值范圍中各自選擇一個整數,記小A選擇的數值為a,小B選擇的數值為b。他們用一個均勻分布的隨機數發生器在該數值范圍中隨機生成一個整數c,定義制勝的游戲規則為誰選的數離c近則誰取得勝利。由於小B是女生,特別定義當兩人的數與c之間的差值相等時,小B獲勝。
由於先前的游戲中,小A為表現紳士風度總是輸多贏少,因此他特別渴望這次能夠給小B比較深刻的映像,所以向你求助。你事先已經知道了小B所選的數值和指定的數值范圍,小A希望你幫他選擇一個數值使得他獲勝的概率最大。
輸入有若干行,每行為一組數據,包含兩個正整數n和b,分別表示數值范圍和小B所需的數,其中1<=b<=n<=10^9
基礎知識題:
【1】charAt()和indexOf()的區別
charAt(index)--返回指定位置處的字符
<script type="text/javascript"> var str="Hello world!" document.write(str.charAt(1)) </script>以上代碼的輸出是: e
indexOf()--從某一個位置開始查找字符,返回該字符所在的位置索引值。
string.indexOf(substring, startIndex);//
- substring -- 要查找的子字符串
- startIndex -- 可選參數,從string的startpos位置開始查找substring,如果沒有此參數將從string的開始位置查找
比如下面的列子:
var str = "www.dreamdu.com";
document.write(str.indexOf("dream")); //輸出 4
str = "www.dreamdu.com";
document.write(str.indexOf("dudream"));//輸出 -1(表示不存在)
str = "www.dreamdu.com";
document.write(str.indexOf("d",6));//輸出 9 從第6個位置處開始查找
str = "www.dreamdu.com";
document.write(str.indexOf("d",20));//輸出 -1
str = "www.dreamdu.com";
document.write(str.indexOf("d",-1));//輸出 4
str = "夢之都";
document.write(str.indexOf("夢"));//輸出 0
延伸擴展下:
三者區別:
slice(開始位置,結束位置)--不包括結束位置
substring(開始位置,結束位置)--不包括結束位置
substr(開始位置,結束位置)--包括結束位置,把負數變為0
slice(-1)--------表示倒數第一個)。
substring-------給出負數的話,會自動將其變為substring(-1)--變為0
substr(開始位置,結束位置)--包括結束位置,把負數變為0
【2】XMLHttpRequest的請求狀態有哪些?
HTTP 處理狀態:
當一個XMLHttpRequest初次創建時,這個屬性(readystate)的值從0開始,直到接收到完整的HTTP響應,這個值增加到 4。
5個狀態中每一個都有一個相關聯的非正式的名稱,下表列出了狀態、名稱和含義:
0 Uninitialized 初始化狀態。XMLHttpRequest 對象已創建或已被 abort() 方法重置。----//初始化
1 Open open() 方法已調用,但是 send() 方法未調用。請求還沒有被發送。---------------//調用接聽
2 Sent Send() 方法已調用,HTTP 請求已發送到 Web 服務器。未接收到響應。------------//請求講話
3 Receiving 所有響應頭部都已經接收到。響應體開始接收但未完成。--------------------//接受未完成
4 Loaded HTTP 響應已經完全接收。---------------------------------------------//完全接受
另外每種不同的狀態對應的含義可查看下面列表:
1xx - 信息提示
100 - 初始的請求已經接受,客戶應當繼續發送請求的其余部分。(HTTP 1.1新)
101 - 服務器將遵從客戶的請求轉換到另外一種協議。(HTTP 1.1新)
2xx - 成功
200 - OK 一切正常,對GET和POST請求的應答文檔跟在后面。
201 - Created 服務器已經創建了文檔,Location頭給出了它的URL。
202 - Accepted 已經接受請求,但處理尚未完成。
203 - Non-Authoritative Information 文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝,非權威性信息(HTTP 1.1新)。
204 - No Content 沒有新文檔,瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
205 - Reset Content 沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容(HTTP 1.1新)。
206 - Partial Content 客戶發送了一個帶有Range頭的GET請求,服務器完成了它(HTTP 1.1新)。
3xx - 重定向
300 - Multiple Choices 客戶請求的文檔可以在多個位置找到,這些位置已經在返回的文檔內列出。如果服務器要提出優先選擇,則應該在Location應答頭指明。
301 - Moved Permanently 客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。
302 - Found 類似於301,但新的URL應該被視為臨時性的替代,而不是永久性的。注意,在HTTP1.0中對應的狀態信息是“Moved Temporatily”。出現該狀態代碼時,瀏覽器能夠自動訪問新的URL,因此它是一個很有用的狀態代碼。注意這個狀態代碼有時候可以和301替換使用。例如,如果瀏覽器錯誤地請求 http://host/~user (缺少了后面的斜杠),有的服務器返回301,有的則返回302。嚴格地說,我們只能假定只有當原來的請求是GET時瀏覽器才會自動重定向。請參見307。
303 - See Other 類似於301/302,不同之處在於,如果原來的請求是POST,Location頭指定的重定向目標文檔應該通過GET提取(HTTP 1.1新)。
304 - Not Modified 客戶端有緩沖的文檔並發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
305 - Use Proxy 客戶請求的文檔應該通過Location頭所指明的代理服務器提取(HTTP 1.1新)。
307 - Temporary Redirect 和302(Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是POST,即使它實際上只能在POST請求的應答是303時才能重定向。由於這個原因,HTTP 1.1新增了307,以便更加清除地區分幾個狀態代碼:當出現303應答時,瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。(HTTP 1.1新)
4xx - 客戶端錯誤
400 - Bad Request 請求出現語法錯誤。
401 - Unauthorized 訪問被拒絕,客戶試圖未經授權訪問受密碼保護的頁面。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示用戶名字/密碼對話框,然后在填寫合適的Authorization頭后再次發出請求。
404 - Not Found 無法找到指定位置的資源。這也是一個常用的應答。
405 - Method Not Allowed 請求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對指定的資源不適用,用來訪問本頁面的 HTTP 謂詞不被允許(方法不被允許)(HTTP 1.1新)
406 - Not Acceptable 指定的資源已經找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容,客戶端瀏覽器不接受所請求頁面的 MIME 類型(HTTP 1.1新)。
407 - Proxy Authentication Required 要求進行代理身份驗證,類似於401,表示客戶必須先經過代理服務器的授權。(HTTP 1.1新)
408 - Request Timeout 在服務器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以后重復同一請求。(HTTP 1.1新)
409 - Conflict 通常和PUT請求有關。由於請求和資源的當前狀態相沖突,因此請求不能成功。(HTTP 1.1新)
410 - Gone 所請求的文檔已經不再可用,而且服務器不知道應該重定向到哪一個地址。它和404的不同在於,返回407表示文檔永久地離開了指定的位置,而404表示由於未知的原因文檔不可用。(HTTP 1.1新)
411 - Length Required 服務器不能處理請求,除非客戶發送一個Content-Length頭。(HTTP 1.1新)
412 - Precondition Failed 請求頭中指定的一些前提條件失敗(HTTP 1.1新)。
413 – Request Entity Too Large 目標文檔的大小超過服務器當前願意處理的大小。如果服務器認為自己能夠稍后再處理該請求,則應該提供一個Retry-After頭(HTTP 1.1新)。
414 - Request URI Too Long URI太長(HTTP 1.1新)。
415 – 不支持的媒體類型。
416 – Requested Range Not Satisfiable 服務器不能滿足客戶在請求中指定的Range頭。(HTTP 1.1新)
417 – 執行失敗。
423 – 鎖定的錯誤。
5xx - 服務器錯誤
500 - Internal Server Error 服務器遇到了意料不到的情況,不能完成客戶的請求。
501 - Not Implemented 服務器不支持實現請求所需要的功能,頁眉值指定了未實現的配置。
502 - Bad Gateway 服務器作為網關或者代理時,為了完成請求訪問下一個服務器,但該服務器返回了非法的應答。 亦說Web 服務器用作網關或代理服務器時收到了無效響應。
503 - Service Unavailable 服務不可用,服務器由於維護或者負載過重未能應答。例如,Servlet可能在數據庫連接池已滿的情況下返回503。服務器返回503時可以提供一個Retry-After頭。這個錯誤代碼為 IIS 6.0 所專用。
504 - Gateway Timeout 網關超時,由作為代理或網關的服務器使用,表示不能及時地從遠程服務器獲得應答。(HTTP 1.1新) 。
505 - HTTP Version Not Supported 服務器不支持請求中所指明的HTTP版本。(HTTP 1.1新)。
【3】如何得到某一范圍中的任意數?
function getRandom(min,max){
return Math.floor(min+Math.random()*(max-min)); //Math.random()是令系統隨機選取大於等於 0.0 且小於 1.0 的偽隨機 double 值 }
var random=getRandom(2,8)//得到2-8之間的任意隨機數
