【題目】
小易有一些彩色的磚塊。每種顏色由乙個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有乙個給定的字串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 其中 表示絕對值 現在要對把這...