1.翻转字符串
var str = "smile at life";
console.log(str.split(" ").reverse().join(" "))//life at smile
console.log(str.split("").reverse().join(""))//efil ta elims 这种方法是错误的,所以记住要使用上面一种形式
-
join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
-
split()
-
split() 方法用于把一个字符串分割成字符串数组。
-
两个参数,第一个是以什么元素进行分割,第二个是保留的
-
如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
-
var str1="How are you doing today?" document.write(str1.split(" ") + "<br />")//How,are,you,doing,today? document.write(str1.split("") + "<br />")//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,? document.write(str1.split(" ",3))//How,are,you
-
2.替换空格
var str = "smile at life";
//方法一: 先转成字符数组,再把数组中的所有字符放入一个字符串
console.log(str.split(" ").join("%20"))//smile%20at%20life
//方法二: 使用正则替换
console.log(str.replace(/s/g,'%20'))//smile%20at%20life
3.左旋转字符串(剑指offer)
function LeftRotateString(str, n) {
if (str === null || str.length === 0) return '';
n = n % str.length;
return str.slice(n) + str.slice(0, n);
}
-
slice()
-
slice() 方法可从已有的数组中返回选定的元素。
-
arrayObject.slice(start,end) 如果没有指定end参数,那么切分的数组包含从 start 到数组结束的所有元素。
-
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
-
注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
-
4.字符串同构
- Isomorphic Strings (Easy)
Given "egg", "add", return true.
Given "foo", "bar", return false.
Given "paper", "title", return true.
方法一:记录一个字符上次出现的位置,如果两个字符串中的字符上次出现的位置一样,那么就属于同构。(80ms)
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function(s, t) {
const preIndexOfS = [];
const preIndexOfT = [];
for (let i = 0; i < s.length; i++) {
const sc = s.charAt(i), tc = t.charAt(i);
if (preIndexOfS[sc] != preIndexOfT[tc]) {
return false;
}
preIndexOfS[sc] = i + 1;
preIndexOfT[tc] = i + 1;
}
return true;
};
方法二:使用一一映射的方法,(72ms),构造两个对象,以egg和add为例,sMap={e:a},如果不存在,就添加进去,如果存在,判断e是不是等于之前已经存在的a
var isIsomorphic = function(s, t) {
const sMap = {}
const tMap = {}
for (let i = 0; i < s.length; i++) {
const si = s[i]
const ti = t[i]
if (sMap[si]) {
if (sMap[si] !== ti) return false
} else {
sMap[si] = ti
}
if (tMap[ti]) {
if (tMap[ti] !== si) return false
} else {
tMap[ti] = si
}
}
return true
};