該算法題來(lái)自于 codewars【語(yǔ)言: javascript】,翻譯如有誤差,敬請(qǐng)諒解~

- 任務(wù)
- 我的朋友想要起一個(gè)樂(lè)隊(duì)名。她喜歡使用以下公式命名樂(lè)隊(duì):
'The' +首字母大寫的單詞dolphin -> The Dolphin
- 然而,當(dāng)一個(gè)單詞的第一個(gè)和最后一個(gè)字母相同時(shí),她喜歡重復(fù)該單詞兩次,并將它們與第一個(gè)和最后一個(gè)字母連接在一起,然后合并成一個(gè)如下所示的單詞(前面沒(méi)有
“The”)
alaska -> Alaskalaska europe -> Europeurope - 請(qǐng)編寫一個(gè)函數(shù),接收一個(gè)參數(shù)(字符串),返回一個(gè)符合上述要求的樂(lè)隊(duì)名稱。
- 解答
- 其一
const bandNameGenerator = str => {
const subStr = str.slice(1,str.length);
return str.charAt(str.length - 1) == str.charAt(0) ? str.charAt(0).toUpperCase() + subStr.repeat(2) : 'The ' + str.charAt(0).toUpperCase() + subStr;
}
- 其二
const bandNameGenerator = s => s[0] != s[s.length-1] ? "The " + s[0].toUpperCase() + s.slice(1) : s[0].toUpperCase() + s.slice(1) + s.slice(1);
- 其三
const startEndSame = (str = '') => str[0] === str[str.length - 1];
const repeat = (str) => `${ str.slice(0, -1) }${ str }`;
const capitalize = (str) => `${ str[0].toUpperCase() }${ str.slice(1) }`;
const bandNameGenerator = (str) => startEndSame(str) ? capitalize(repeat(str)) : `The ${ capitalize(str) }`;
- 其四
function bandNameGenerator(s) {
return /^(.).*\1$/.test(s)?s[0].toUpperCase()+s.slice(1)+s.slice(1):"The "+s[0].toUpperCase()+s.slice(1)
}