华为OD --- 敏感字段加密

华为OD --- 敏感字段加密

题目

独立实现

思路

通过便利字符串把所有"关键字"找出来,然后将第N个关键字替换成******,最后再通过 "_" 拼接起来即可

源码实现

js 复制代码
	const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // 输入字符串个数
    const allStrLength = []
    // 保存关键字
    const keywordIndex = Number(await readline());

    let inputStr = await readline();

    let currentKeyStr = ''
    let startFlag = false
    for (let i = 0; i < inputStr.length; i++) {
        if (inputStr[i] === '"') {
            if (startFlag === false) {
                // 特殊关键词处理开始
                startFlag = true
                currentKeyStr += '"'
                continue
            }
            if (startFlag === true) {
                startFlag = false
                currentKeyStr += '"'
                allStrLength.push(currentKeyStr)
                currentKeyStr = ''
                continue
            }
        }
        if (inputStr[i] === '_' && startFlag === false) {

            if (currentKeyStr !== '') allStrLength.push(currentKeyStr)
            currentKeyStr = ''
            continue;
        }
        if (inputStr[i] !== '_' && inputStr[i] !== '"' || startFlag === true) {
            currentKeyStr += inputStr[i]
        }
        if (i === inputStr.length - 1 && currentKeyStr !== '') {
            allStrLength.push(currentKeyStr)
        }
    }


    if(keywordIndex < allStrLength.length){
        allStrLength[keywordIndex] = '******'

        const transformInputStr = allStrLength.map(item => item === '' ? '""' : item).join('_')
        console.log(transformInputStr)
    }else{
        console.log('ERROR')
    }

})();

参考实现

在网上看了参考实现和题主的独立实现思路差不多,固不搬运了

相关推荐
星海拾遗1 小时前
华为OD --- TLV解码
华为od
arnold661 小时前
华为OD E卷(100分)31-敏感字段加密
算法·华为od
CodeClimb1 小时前
【华为OD-E卷-开心消消乐 100分(python、java、c++、js、c)】
java·python·华为od
CodeClimb7 小时前
【华为OD-E卷-预订酒店 100分(python、java、c++、js、c)】
java·python·华为od
arnold6612 小时前
华为OD E卷(100分)25-整数对最小和
算法·华为od
CodeClimb12 小时前
【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】
java·python·华为od
CodeClimb12 小时前
【华为OD-E卷-通信误码 100分(python、java、c++、js、c)】
java·python·华为od
arnold6612 小时前
华为OD E卷(100分)32-字符串分割
算法·华为od
星海拾遗12 小时前
华为OD --- 靠谱的车
华为od