題目:字串消除
給定乙個字串,僅由a,b,c 3種小寫字母組成。當出現連續兩個不同的字母時,你可以用另外乙個字母替換它,如 有ab或ba連續出現,你把它們替換為字母c; 有ac或ca連續出現時,你可以把它們替換為字母b; 有bc或cb 連續出現時,你可以把它們替換為字母a。 你可以不斷反覆按照這個規則進行替換,你的目標是使得最終結果所得到的字串盡可能短,求最終結果的最短長度。 輸入:字串。長度不超過200,僅由abc三種小寫字母組成。 輸出: 按照上述規則不斷消除替換,所得到的字串最短的長度。 例如:輸入cab,輸出2。因為我們可以把它變為bb或者變為cc。 輸入bcab,輸出1。儘管我們可以把它變為aab -> ac -> b,也可以把它變為bbb,但因為前者長度更短,所以輸出1。
解答:我定感激涕零!
下面給出我的實現**
。是的,可能你已經意料到了,依舊是js實現。。裡面用了遞迴實現,大家自行參考。
function getres(str)
var allrepary = getallrep(str),
index,strlen,sublen;
if(allrepary)else
str = str.replace(compstr,removerep(compstr,v));
str = getres(str);
}else
return str;
}function removerep(str,rep)else
}function dif(str)$/g.test(str))
var s = "abc",
s1 = str.charat(0),
s2 = str.charat(1),
ind1 = s.indexof(s1),
ind2 = s.indexof(s2);
return /^([a-za-z])\1$/g.test(str)?str:s.charat(3-ind1-ind2);
}function getallrep(str)
function getmanlen(str)
console.log(getmanlen("bcab"));
題目:陣列排序
給定乙個包含1-n的數列,我們通過交換任意兩個元素給數列重新排序。求最少需要多少次交換,能把陣列排成按1-n遞增的順序,其中,陣列長度不超過100。 例如: 原陣列是3,2,1, 我們只需要交換1和3就行了,交換次數為1,所以輸出1。 原陣列是2,3,1,我們需要交換2和1,變成1,3,2,再交換3和2,變為1,2,3,總共需要的交換次數為2,所以輸出2。
解答:
function sort(ary)
var len = ary.length,
change = 0,
j;for(var i =0;i=0;i--)
} console.log(ary);
var maxwroind,maxrig;
while(~(maxwroind=getmax(ary)))
return change;
} function getmax(ary)
} }return index;
}function getright(ary,index) }}
console.log(sort([3,1,5,2,4])); // 4
演算法題 N皇后 JS實現
n 皇后問題 研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。給你乙個整數 n 返回所有不同的 n 皇后問題 的解決方案。每一種解法包含乙個不同的 n 皇后問題 的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。遞迴 param n return var s...
演算法題 移動零 JS實現
給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。輸入 0,1,0,3,12 輸出 1,3,12,0,0 思路 方案 遍歷陣列,將0全部去掉,然後用0填充陣列 利用指標,交換元素位置 方案一 ...
幾個PHP演算法題
有5個人偷了一堆蘋果,準備在第二天分贓。晚上,有一人遛出來,把所有菜果分成5份,但是多了乙個,順手把這個扔給樹上的猴了,自己先拿1 5藏了。沒想到其他四人也都是這麼想的,都如第乙個人一樣分成5份把多的那乙個扔給了猴,偷走了1 5。第二天,大家分贓,也是分成5份多乙個扔給猴了。最後一人分了乙份。問 共...