我試圖解決從coderbyte.com以下問題這個JavaScript編碼的挑戰:遇到問題解決從coderbyte
使用JavaScript語言,具備的功能SimpleSymbols(STR)取str參數傳遞並通過返回字符串true或false來確定它是否是可接受的序列。 str參數由+和=符號組成,它們之間有幾個字母(即。++ d + === + C++ == a),字符串爲true,每個字母必須用+符號包圍。所以左邊的字符串是錯誤的。該字符串不會爲空,並且至少有一個字母。
以下是我的嘗試:
function SimpleSymbols(str) {
// code goes here
var abc = 'abcdefghijklmnopqrstuvwxyz';
for (var i = 0; i < str.length; i++) {
if (abc.indexOf(str[i]) !== -1) {
if (str[i-1] + str[i+1] === "++") {
return true;
}
else {
return false;
}
}
}
}
這適用於以下幾種情況:
SimpleSymbols("+a+d+"); // true
SimpleSymbols("+ab+d+"); // false
SimpleSymbols("b+d+"); // false
我發現的唯一的情況下這並沒有提供正確的答案是,當有一個尾隨字母,例如:
SimpleSymbols("+a+b"); // true
這會返回true,實際上它應該返回false。
注:我假設字符串將是小寫...我沒有處理區分大小寫,但我想要小寫版本工作,然後我會讓它獨立的情況下。
關於我的代碼有什麼問題的任何想法?
感謝您修復我的錯誤代碼以及性能改進方面的建議。從性能角度來看,字符串連接通常是不好的? – Everes83
不客氣!通常,字符串連接不是很快..他們需要分配和複製一個可變長度的數組,這比在處理器中測試/或添加一個整數慢得多。別擔心,但如果有更簡單/更快的替代方案,那就更好。希望這可以幫助! –