題目來源於牛客網劍指offer專題以及leetcode:
https://www.nowcoder.com/ta/front-end?page=1
https://leetcode.com/problems
一、反轉
1. 反轉 leetcode557
牛客:替換空格
題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy
正則表達式寫法:
function replaceSpace(str) {
return str.replace(/\s/g, "%20");
}
牛客:第一個只出現一次的字符leetcode:387. 字符串中的第一個唯一字符
描述
給定一個字符串,找到它的第一個不重複的字符,並返回它的索引。如果不存在,則返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
思路
特殊情況:字符串爲空/字符串沒有匹配,返回-1
JavaScript中對於字符串的定位有兩個方法:indexOf( ) 和 lastIndexOf( )。
遍歷字符串中的字符,若這兩個索引相等,說明只出現一次,就返回這個索引,因爲是從前向後遍歷,第一個return就是第一個符合條件的字符串。
JavaScript 中的 for…of 循環可以用來循環字符串,
for…of 語句創建一個循環來迭代可迭代的對象。在 ES6 中引入的 for…of 循環,以替代 for…in 和 forEach() ,並支持新的迭代協議。for…of 允許你遍歷 Arrays(數組), Strings(字符串), Maps(映射), Sets(集合)等可迭代的數據結構等。
使用return可以終止循環+退出函數,break都可以終止循環。
注意:區分for of 和 for in
代碼:
var firstUniqChar = function(s) {
for(let i in s){
if(s.indexOf(s[i]) === s.lastIndexOf(s[i])&&s.indexOf(s[i])!== -1){
return i;
}
}
return -1;
};