leetcode题

55 阅读1分钟
/**
 * leetcode题 2306.公司命名
 * 给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下:
 * 从 ideas 中选择 2 个 不同 名字,称为 ideaA 和 ideaB 
 * 交换 ideaA 和 ideaB 的首字母
 * 如果得到的两个新名字 都 不在 ideas 中,那么 ideaA ideaB(串联 ideaA 和 ideaB ,中间用一个空格分隔)是一个有效的公司名字
 * 否则,不是一个有效的名字
 * 返回 不同 且有效的公司名字的数目
 * 
 * 示例 1:
 *     输入:ideas = ["coffee","donuts","time","toffee"]
 *     输出:6
 *     解释:下面列出一些有效的选择方案:
 *     - ("coffee", "donuts"):对应的公司名字是 "doffee conuts" 
 *     - ("donuts", "coffee"):对应的公司名字是 "conuts doffee" 
 *     - ("donuts", "time"):对应的公司名字是 "tonuts dime" 
 *     - ("donuts", "toffee"):对应的公司名字是 "tonuts doffee" 
 *     - ("time", "donuts"):对应的公司名字是 "dime tonuts" 
 *     - ("toffee", "donuts"):对应的公司名字是 "doffee tonuts" 
 *     因此,总共有 6 个不同的公司名字
 *     
 *     下面列出一些无效的选择方案:
 *     - ("coffee", "time"):在原数组中存在交换后形成的名字 "toffee" 
 *     - ("time", "toffee"):在原数组中存在交换后形成的两个名字
 *     - ("coffee", "toffee"):在原数组中存在交换后形成的两个名字
 * 示例 2:
 *     输入:ideas = ["lack","back"]
 *     输出:0
 *     解释:不存在有效的选择方案。因此,返回 0 
 */

let ideas = ["coffee", "donuts", "time", "toffee"]
function arra(ideas) {
  // 储存结果的二维数组
  let twoArr = []
  for (let i = 0; i < ideas.length; i++) {
    let arr = []
    arr.push(ideas[i])
    let arr2 = ideas.filter(item => {
      return ideas[i] !== item
    })
    let newArr
    for (let j = 0; j < arr2.length; j++) {
      if (arr.length > 1) {
        arr.splice(1, 1)
      }
      arr.push(arr2[j])
      newArr = arr.slice(0)
      twoArr.push(newArr);
    }
  }


  // 过滤方法
  // console.log('twoArr', twoArr);
  let twoArr2, start1, start2, newStr1, newStr2
  for (let i = 0; i < twoArr.length; i++) {
    const element = twoArr[i];
    start1 = element[0].charAt(0)
    start2 = element[1].charAt(0)
    newStr1 = start2 + element[0].slice(1)
    newStr2 = start1 + element[1].slice(1)
    // console.log(newStr1, newStr2);
    if (ideas.indexOf(newStr1) != -1 || ideas.indexOf(newStr2) != -1) {
      twoArr.splice(i, 1, " ")
    }
    twoArr2 = twoArr.filter(item => {
      return item != " "
    })
  }
  console.log('twoArr2', twoArr2);
  console.log('twoArr2', twoArr2.length);
}
arra(ideas)