js實現幾個演算法題

2021-06-21 20:14:38 字數 1699 閱讀 2101

題目:字串消除

給定乙個字串,僅由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份多乙個扔給猴了。最後一人分了乙份。問 共...