♥-同构字符串

描述:答案

给定两个字符串 `s` 和 `t`,判断它们是否是同构的。

如果 `s` 中的字符可以按某种映射关系替换得到 `t` ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,
相同字符只能映射到同一个字符上,字符可以映射到自己本身。

题解:练习

判断 ss 和 tt 每个位置上的字符是否都一一对应,
即 ss 的任意一个字符被 tt 中唯一的字符对应,
同时 tt 的任意一个字符被 ss 中唯一的字符对应。
这也被称为「双射」的关系。
isIsomorphic("egg", 'add'); // true
isIsomorphic("paper", 'title'); // true
isIsomorphic("kick", 'side'); // false

function isIsomorphic(s, t) {
  let s2t = {}, t2s = {}
  for(let i=0;i<s.length;i++){
    let x=s[i], y=t[i]
    if(s2t[x] && s2t[x] !== y || t2s[y] && t2s[y] !== x) {
      // ss 的任意一个字符被 tt 中唯一的字符对应
      // 同时 tt 的任意一个字符被 ss 中唯一的字符对应
      return false
    }
    s2t[x] = y
    t2s[y] = x
  }
  return true
}

力扣-同构字符串

♥-js数组去重

(1) 使用ES6 Set对象去重

// Set数据集
let arr = [1,2,3,4,3,2,3,4,6,7,6]; 
[...new Set(arr)]; //[1, 2, 3, 4, 6, 7] 

(2) 利用新数组indexOf查找

indexOf()方法可返回某个指定的元素在数组中首次出现的位置。如果没有就返回-1

(3) for循环结合Object.values()

新建一个对象obj,通过for循环给obj添加属性,属性keyvalue均为数组的元素,在通过Object.values()获取得到无重复的新数组。

let arr = [1,2,3,3,4,2,4,5,6,8,4,3,5]
let obj = {}, newArr = []
for(let i=0;i<arr.length;i++){
  obj[arr[i]] = arr[i]
}
newArr = Object.values(obj)

♥-JS实现九九乘法表

<style>
  *{
    margin: 0;
    padding: 0;
  }
  li{
    list-style: none;
    margin-bottom: 10px;
  }
  span{
    display: inline-block;
    width: 80px;
    line-height: 28px;
    background-color: forestgreen;
    color:greenyellow;
    margin-right: 10px;
    text-align: center;
  }
</style>
<body>
  <ul></ul>
  <script>
    // 九九乘法表
    for(let i=1;i<=9;i++) {
      let li = document.createElement('li')
      for(let j=1;j<=i;j++) {
        let span = document.createElement('span')
        span.innerHTML = `${j} x ${i} = ${j*i}`
        li.appendChild(span)
      }
      document.querySelector('ul').appendChild(li)
    }
  </script>
</body>