描述:重複輸出乙個給定的字串(str
第乙個引數)n 次 (num
第二個引數),如果第二個引數num
不是正數的時候,返回空字串。
思路:我將介紹三種方法:
使用 while 迴圈
使用遞迴
使用es6 `repeat()`
方法1:通過 `while` 迴圈重複輸出乙個字串
function repeatstringnumtimes(string, times)
/*while迴圈邏輯
條件 t/f repeatedstring += string 結果 次數
1th (3 > 0) true "" + "abc" "abc" 2
2th (2 > 0) true "abc" + "abc" "abcabc" 1
3th (1 > 0) true "abcabc" + "abc" "abcabcabc" 0
4th (0 > 0) false}*/
//第3步. 返回重複字串
return repeatedstring; //
"abcabcabc"}
repeatstringnumtimes(
"abc
", 3);
不過這裡還可以有幾個變種:對於老前端來說,首先乙個可能會將字串拼接,修改為 陣列join()
拼接字串,例如:
function repeatstringnumtimes(string, times)
return repeatedarr.join(""
); }
repeatstringnumtimes(
"abc
", 3)
很多老前端都有用陣列join()
拼接字串的「情懷」,因為很早以前普遍認為陣列join()
拼接字串比字串+
拼接速度要快得多。不過現在未必,例如,v8 下+
拼接字串,要比陣列join()
拼接字串快。我用這兩個方法測試了3萬次重複輸出,只相差了幾毫秒。
另乙個變種可以用 for 迴圈:
function repeatstringnumtimes(string, times)
return
repeatedstring;
}repeatstringnumtimes(
"abc
", 3)
方法2:通過條件判斷和遞迴重複輸出乙個字串
遞迴是一種通過重複地呼叫函式本身,直到它達到達結果為止的迭代操作的技術。為了使其正常工作,必須包括遞迴的一些關鍵特徵。
第一種是基本情況:乙個語句,通常在乙個條件語句(如if
)中,停止遞迴。
第二種是遞迴情況:呼叫遞迴函式本身的語句。
這裡是解決方案:
function repeatstringnumtimes(string, times)
//步驟2.檢查times是否等於1,如果是,返回字串本身。
if (times === 1
)
//步驟3. 使用遞迴
else
/*遞迴方法的第一部分你需要記住,你不會只呼叫一次,您將有好幾個巢狀呼叫
times string + repeatstringnumtimes(string, times - 1)
1st call 3 "abc" + ("abc", 3 - 1)
2nd call 2 "abc" + ("abc", 2 - 1)
3rd call 1 "abc" => if (times === 1) return string;
4th call 0 "" => if (times <= 0) return "";
遞迴方法的第二部分
4th call will return ""
3rd call will return "abc"
2nd call will return "abc"
1st call will return "abc"
最後呼叫是串聯所有字串
return "abc" + "abc" + "abc"; // return "abcabcabc";
*/}repeatstringnumtimes(
"abc
", 3);
注意:遞迴的三個步驟
方法3:使用es6 `repeat()` 方法重複輸出乙個字串
這個解決方案比較新潮,您將使用 string.prototype.repeat() 方法:
repeat() 方法構造並返回乙個新字串,該字串包含被連線在一起的指定數量的字串的副本。 這個方法有乙個引數count
表示重複次數,介於0和正無窮大之間的整數 : [0, +∞) 。表示在新構造的字串中重複了多少遍原字串。重複次數不能為負數。重複次數必須小於 infinity,且長度不會大於最長的字串。
這裡是解決方案:
function repeatstringnumtimes(string, times)
//step 2. else 如果times是負數,如果為true則返回乙個空字串
else}
repeatstringnumtimes(
"abc
", 3);
您可以使用三元表示式作為 if/else 語句的快捷方式,如下所示,誰都會欣賞這樣的簡潔**:
function repeatstringnumtimes(string, times)
repeatstringnumtimes(
"abc
", 3);
此種方法主要是採用了es6的repeat方法,簡便了許多。
去除給定字串中重複的字串
create or replace function myreplace oldstr varchar2,sign varchar2 return varchar2 is str varchar2 4000 currentindex number startindex number endindex...
給定乙個字串,求第乙個不重複的字元
第乙個也就是說我們要保證這順序,使用linkedhashmap來記錄字元個數,因為linkedhashmap維持的元素順序與插入順序一致,而我們正是按照字串中字元出現的順序來將字元插入map中的。不重複使用map的value儲存計數,每插入乙個元素時候給map的value值加1,當我們掃瞄字串時,只...
找出給定字串中第乙個不重複的字元
給定一串字串,找出其中第乙個不重複的字元。如 輸入 abcddcaeb1 soop 輸出 e 思路 定義liststore和liststoredel,對輸入字串str進行遍歷,對str的每乙個字元,分別在store和storedel中查詢,如果在store中存在該字元,則把store中的該字元刪除,...