首页 > 其他分享 >TypeScript基础(一)——交替合并字符串

TypeScript基础(一)——交替合并字符串

时间:2024-11-10 16:46:59浏览次数:1  
标签:index TypeScript string 交替 length word1 str word2 字符串

TypeScript基础(一)—— 交替合并字符串

题设:输入“abc”、“ef”,输出“aebfc”。

1、第一次尝试
function mergeAlternately(word1: string, word2: string): string {
    // 采用三元运算符
    let max_len = word1.length < word2.length ? word2.length : word1.length;
    // 字符串直接拼接
    let cache_str = "";
    for (let i = 0; i < max_len; i++) {
        // 如果长度超出字符串长度,则会得到undefined
        if (word1[i] != undefined) {
            cache_str += word1[i];
        }
        if (word2[i] != undefined) {
            cache_str += word2[i];
        }
    }
    return cache_str;
};
分析:

​ (1)执行时间和内存占用略高,不太理想。

​ (2)可读性略差。

2、第二次尝试
function mergeAlternately(word1: string, word2: string): string {
    // 用内置函数Math.max替换
    // let max_len = word1.length < word2.length ? word2.length : word1.length;
    let max_len=Math.max(word1.length,word2.length);
    let cache_str = "";
    for (let i = 0; i < max_len; i++) {
        // 直接判断长度
        // if (word1[i] != undefined) {
        if (i < word1.length) {
            cache_str += word1[i];
        }
        // if (word2[i] != undefined) {
        if (i < word2.length) {
            cache_str += word2[i];
        }
    }
    return cache_str;
};
分析:

​ (1)内置函数通常经过优化,性能上可能略优于手写的三元运算符。

​ (2)word1[i]在每次索引时,都会进行一次查找操作,会稍微影响性能,尤其是在循环中频繁执行时。而i < word2.length不需要实际访问索引。所以直接进行长度比较,相对于取值再比较更快。

3、较优解
function mergeAlternately(word1: string, word2: string): string {
    let index = 0  // 长度计数
    let str = ''
    // 使用while循环,如果有其中一个字符串已经遍历完毕,则停止
    while (word1[index]!=null && word2[index]!=null) {
        str += word1[index]+word2[index]  // 一次插入两个值
        index++;  // 计数加一
    }
    // 判断剩余字符串
    if (word1[index]) {
        // 将 word1 字符串从指定的 index 开始到字符串末尾的子字符串追加到 str 变量中。
        str += word1.substring(index);
    } 
    else if (word2[index]) {
        str += word2.substring(index);
    } 
    return str
};
分析:

​ (1)一次性添加两个字符,直到短字符串结束,优化效率。

​ (2)使用substring直接添加剩余字符,减少循环。

// 使用数组
function mergeAlternately(word1: string, word2: string): string {
    let index = 0;
    let resultArray: string[] = [];
    
    while (word1[index] != null && word2[index] != null) {
        resultArray.push(word1[index]);
        resultArray.push(word2[index]);
        index++;
    }
    // 减少判断
    resultArray.push(word1.substring(index));
    resultArray.push(word2.substring(index));
    
    return resultArray.join('');
}
分析:

​ (1)使用字符数组而不是字符串拼接,在面对长字符串时效率更高。

​ (2)直接pash剩余字符,并使用.join('')消除空字符,减少逻辑判断。

标签:index,TypeScript,string,交替,length,word1,str,word2,字符串
From: https://www.cnblogs.com/ChangShinK/p/18538169

相关文章

  • 字符串和数据输入
     字符串三种定义方法单引号定义法,可以内含双引号双引号定义法,可以内涵单引号可以使用转移字符(\)来将引号解除效用,变成普通字符串。示例如上字符串的拼接通过+号完成(一般用于字面量和变量或变量和变量之间),只能适用于字符串本身。例如:字符串没有办法通过+和(整数、浮点......
  • Python 深入浅出字符串
    **Python字符串精讲**大家好,我是Giao仔。创作不易请大家多多支持Python的程序中充满了字符串(string),在平常阅读代码时也屡见不鲜。字符串同样是Python中很常见的一种数据类型,比如日志的打印、程序中函数的注释、数据库的访问、变量的基本操作等等,都用到了字符串。......
  • 【纳什博弈、ADMM】基于纳什博弈和交替方向乘子法的多微网主体能源共享研究(Matlab代码
     ......
  • 根据二叉树创建字符串
    题目:606.根据二叉树创建字符串-力扣(LeetCode)给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空......
  • 干货分享:Air780E软件指南:字符串处理
    一、Lua字符串介绍关于字符串,Lua提供了一些灵活且强大的功能,一些入门知识如下:1.1字符串定义在Lua中,字符串可以用单引号'或双引号"来定义。例如:localstr1='Hello,World!'localstr2="Hello,Lua!"1.2字符串长度可以使用#操作符获取字符串的长度。例如:locallength=#"H......
  • Playwright使用Typescript实现在测试case文件中调用另一个文件中的方法
    前提:(1)安装了nodejs(2)创建了测试目录(3)使用Vscode安装了Playwright插件可以参考官方文档:https://playwright.dev/docs/getting-started-vscode 在vscode界面最左侧的按钮选择Explorer,创建一个与tests目录同级的目录methods,并在methods目录下创建文件method1.ts,目录结构如......
  • 达梦数据库DM Exception字符串截断错误,略坑~
    前言我之前在使用达梦数据库的时候,遇到了很多很多的问题,主要对达梦数据库也不是很熟悉,它的语法和我所熟悉的mysql和postgresql有很大的区别。今天,讲一下我之前遇到的一个问题。这个问题的起因是用达梦数据库迁移工具,将数据库从postgresql迁移到达梦数据库。迁移之后导致的代码报......
  • 算法求解(C#)-- 寻找包含目标字符串的最短子串算法
    1.引言在字符串处理中,我们经常需要从一个较长的字符串中找到包含特定目标字符串的最短子串。这个问题在文本搜索、基因序列分析等领域有着广泛的应用。本文将介绍一种高效的算法来解决这个问题。2.问题描述给定一个源字符串source和一个目标字符串target,我们需要找......
  • Python中字符串的详细使用
    文章目录一、字符串的定义1.引号定义字符串2.转义字符二、字符串的访问1.字符串的索引2.字符串的切片三、字符串的方法1.替换replace()2.分割split()3.去除字符串两侧指定字符strip()4.用指定字符连接字符串join()5.查找子字符串find()6.其他常用方法四、字符串的格式......
  • 找到字符串中所有字母异位词
    找到字符串中所有字母异位词题目给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。示例示例1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0的子串是"cba",它是"abc"的异位词。起始索......