重複輸出乙個給定的字串

2022-01-21 15:34:14 字數 3209 閱讀 2362

描述:重複輸出乙個給定的字串(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中的該字元刪除,...