2018網易秋招內推筆試題 彩色的磚塊

2021-08-06 03:29:26 字數 2449 閱讀 8731

【題目】

小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串s,s中每個字元代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所對應的磚塊顏色序列是相同的,那麼認為這兩種方式是一樣的。)

例如: s = "abab",那麼小易有六種排列的結果:

"aabb","abab","abba","baab","baba","bbaa"

其中只有"aabb"和"bbaa"滿足最多只有一對不同顏色的相鄰磚塊。 

輸入描述:

輸入包括乙個字串s,字串s的長度length(1 ≤ length ≤ 50),s中的每乙個字元都為乙個大寫字母(a到z)。

輸出描述:

輸出乙個整數,表示小易可以有多少種方式。

輸入例子1:

abab

輸出例子1:

2

【題目解析】

首先讀懂題很重要,題讀懂了就已經完成一大半了。首先我們來分析一下,"

如果最多

存在一對不同顏色的相鄰

磚塊,那麼這行磚塊就很漂亮的

" ,最多存在一對,也就是有一對或者沒有。後面還有一句"

每乙個字元都為乙個大寫字母(a到z)

",當時被這句坑了一把。其實仔細想想,要滿足"最多存在一對不同顏色的相鄰的磚塊",只有兩種可能性,所有的磚塊都是同一種顏色,或者至多兩種顏色,要是超過了兩種顏色,肯定不會滿足「最多存在一對」的條件。比如:s = "aabbcc",這就已經出現「ab」、「bc」兩對了。因此,現在問題就簡單了:如果全為一種顏色,那麼只有

1種方式;如果是兩種顏色,那麼只有兩種可能,即s = "(n個a)ab(n個b)"或者s = "(n個b)ba(n個a)

",(n大於等於0),其他任何組合都不滿足條件。因此,現在問題轉換為:求s字串中有多少個不同的字母,如果有1個,則輸出1,;如果有2個,則輸出2;否則,輸出0。

【**實現】

方法一:

//按牛客網中資料讀取和輸出方式

var line = readline().split("");

var a = {}, b = ;

for(var i=1;i方法二:

看了被人的**後學到的新方法:object.keys()。先給**:

var line = readline().split("");

var obj = {};

line.foreach(function(item) );

var len = object.keys(obj).length;

if(len <= 2) else

object.keys()

方法會返回乙個由乙個給定物件的自身可列舉屬性組成的陣列,陣列中屬性名的排列順序和使用 for...in 迴圈遍歷該物件時返回的順序一致 (兩者的主要區別是 乙個 for-in 迴圈還會列舉其原型鏈上的屬性)。傳入的引數可以是陣列或者物件,傳入陣列時返回其索引組成的陣列,傳入字串時, 返回其鍵名組成的陣列。例:

/* array 物件 */ 

var arr = ["a", "b", "c"];

console.log(object.keys(arr));

// (3) ['0', '1', '2']

/* 類陣列 物件 */

var obj = ;

console.log(object.keys(obj));

// (3) ['0', '1', '2']

// 類陣列 物件, 隨機 key 排序

var anobj = ;

console.log(object.keys(anobj));

// (3) ['2', '7', '100']

/* object 物件 */

var abc = ;

console.log(object.keys(abc));

// (3) ["a", "b", "c"]

var xyz = ;

console.log(object.keys(xyz));

// (3) ["x", "y", "z"]

/* getfoo是個不可列舉的屬性 */

var my_obj = object.create(

{},

} });my_obj.foo = 1;

alert(object.keys(my_obj));

// 只彈出foo

筆試題 網易2018秋招內推筆試

問題描述 小易有乙個長度為n的整數序列,a 1,a n。然後考慮在乙個空序列b上進行n次以下操作 1 將a i放入b序列的末尾 2 逆置b序列 小易需要你計算輸出操作n次之後的b序列。輸入描述 輸入包括兩行,第一行包括乙個整數n 2 n 2 10 5 即序列的長度。第二行包括n個整數a i 1 a ...

2017網易校招內推筆試題

本人筆試的計算機視覺方向,程式設計題和其他研發崗位類似。歡迎小夥伴們一起討論出正確答案。共20個選擇題,3個程式設計題,1個簡答題 1.linux中,提供tcp ip包過濾功能的軟體叫什麼?a.iptables b.route c.rarp d.filter 2.設一組初始關鍵字序列為,則第4趟氣泡...

2018網易秋招 合唱

題目 小q和牛博士合唱一首歌曲,這首歌曲由n個音調組成,每個音調由乙個正整數表示。對於每個音調要麼由小q演唱要麼由牛博士演唱,對於一系列音調演唱的難度等於所有相鄰音調製化幅度之和,例如乙個音調序列是8,8,13,12,那麼它的難度等於 8 8 13 8 12 13 6 其中 表示絕對值 現在要對把這...