微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最小词典字符串 输入格式

如何解决最小词典字符串 输入格式

我正在尝试解决以下挑战:

为您提供一个特殊的字符串 S ,该字符串表示 关系。字符串 S 仅包含两个字符“ ”。您的 任务是找到由以下内容组成的按字典顺序最小的字符串 L 小写拉丁字母(a-z)且跟在 S 中提到的关系。

例如,如果给您 S 为“ S 中。在这里,答案是“ acbd”,是a b

很明显,如果 S 的长度为 n ,则 L 的长度为 n +1。您必须打印字符串 L

输入格式

  • 第一行包含 T ,表示测试次数 每个测试文件中的案例。
  • 每个测试用例的第一行包含 表示关系的字符串 S

解决方法

一些观察结果:

  • 我们可以用一个额外的“ S ,以便使 S 中的字符数等于输出的预期大小。
  • 如果 S 中的第i th 个字符是“
  • 与S中的连续“ >>连续组相对应的输出字母组是如果它们是序列“

牢记这些原则,设计算法很简单。如果遇到“>”,您只需搜索一个连续序列中有多少个,并为其生成相反的字母块。对于“

这是JavaScript中的一种实现,您可以在其中输入 S ,并且输出将实时显示:

function minString(s) {
    let letters = "abcdefghijklmnopqrstuvwxyz";
    let res = "";
    s += "<"; // add a stub 
    for (let i = 0; i < s.length; i++) {
        if (s[i] === "<") {
            res += letters[i];
        } else {
            let start = i;
            while (s[i] === ">") i++;
            for (let j = i; j >= start; j--) {
                res += letters[j]; // descending series of letters
            }
        }
    }
    return res;
}

// I/O handling

let input = document.querySelector("input");
let output = document.querySelector("div");
const refresh = () => output.textContent = minString(input.value);
input.addEventListener("input",refresh);
refresh();
input { width:100% }
S: <input value="&lt;&lt;>>">
Output:
<div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。