/**
* 需要理解题目本质:
* 循环 -> 重复 -> 节点再生
* 循环意味着会有重复的元素;
* 所以只要有重复的元素,就可以以这个元素为据点,往其前后填充缺省的不重复的部分,形成一个循环节;
* 就像《灵笼》中可再生的噬极兽。噬极兽身体每一部分都是单独的。噬极兽的脑袋被拔了,它可以以脑袋为节点,再生身体的其他部分。
*/
所以本质就是去重之后字符串的长度。
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { // Write your code here while(line = await readline()){ let tokens = line.split(' '); /** * 需要理解题目本质: * 循环 -> 重复 -> 节点再生 * 循环意味着会有重复的元素; * 所以只要有重复的元素,就可以以这个元素为据点,往其前后填充缺省的不重复的部分,形成一个循环节; * 就像《灵笼》中可再生的噬极兽。噬极兽身体每一部分都是单独的。噬极兽的脑袋被拔了,它可以以脑袋为节点,再生身体的其他部分。 */ let arr = new Set([...tokens[0]]) console.log([...arr].length); } }()