问题描述:

Consider the following expansion:

solve("3(ab)") = "ababab" -- "ab" repeats 3 times
solve("2(a3(b))" = "abbbabbb" -- "a3(b)" == "abbb" repeats twice.

Given a string, return the expansion of that string.

Input will consist of only lowercase letters and numbers in valid parenthesis. There will be no letters or numbers after the last closing parenthesis.

More examples in test cases.

Good luck!

我的思路:

基本上我解题的步骤就是自己手动的步骤,惭愧惭愧!·

先找到最里面的括号,然后按要求扩展。

当(前没有数字的时候,直接将该对括号去掉,然后继续做。

我的答案:

function solve(str){

      while(str.indexOf("(")!=-1){
var a=[];
var b=[];
var s=str.split("");
var left=str.lastIndexOf("(");
var right=str.indexOf(")");
if(/[1-9]/.test(s[left-1])){
b=str.slice(left+1,right);
for(var j=0;j<parseInt(s[left-1]);j++){
a.push(b);
} //可换成 a=b.repeat(parseInt(s[left-1]);
s.splice(left-1,right-left+2,a.join(""));
}else{
s.splice(left,1,"");
s.splice(right,1,""); }
str=s.join("");
    }
  return str;
}

优秀答案:

(1)

function solve(s) {
while (s.includes('(')) {
s = s.replace(/\d?\((\w*)\)/,(m,a)=>a.repeat(+m[0]||1));
}
return s;
}

(2)

const solve = s => s.includes`(` ? solve(s.replace(/(\d*)\(([a-z]+)\)/, (_,a,b)=> b.repeat(+a||1))): s;

js

(1)repeat()返回一个新的字符串对象,它的值等于重复了指定次数的原始字符串。

"acb".repeat(3); // "acbacbacb"

(2)

哈哈哈!

codewars--js--Simple string expansion+ repeat(),includes()方法的更多相关文章

  1. JS中string对象的一些方法

    原文地址(包含所有的string对象的方法):  http://www.dreamdu.com/javascript/object_string/ string.slice(startPos,endP ...

  2. JS中String对象常用的方法

    1.  stringObject.charAt(index) 参数:index 必需,即字符在字符串中的下标.  返回值:   返回在指定位置的字符.返回的字符是长度为 1的字符串.(length属性 ...

  3. JS - 给String.prototype添加replaceAll方法

    String.prototype.replaceAll = function (targetStr, newStr) {  var sourceStr = this.valueOf();  while ...

  4. js中string转map的方法

    例如: var r = "{'msg':'你好'}" ; var map = eval("("+r+")"); //r为String类型的数 ...

  5. JS中String添加trim()方法

    这么牛的JS竟然还要自己封装trim方法. 下面利用prototype和正则表达式的添加方式添加trim(): <script language="javascript"&g ...

  6. JS删除String里某个字符的方法

    关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. 1 2 3 4 var str = " ...

  7. 数组Array和字符串String的indexOf方法,以及ES7(ES2016)中新增的Array.prototype.includes方法

    前言 我们在判断某一个字符是否存在于一个字符串中或者某一个值是否存在于一个数组中时,ES7之前我们需要使用indexOf,ES7引入了新的方法includes 语法 数组:Array.inexOf(s ...

  8. [JS]给String对象添加方法,使传入的字符串字符之间以空格分开输出

    看到一个这样子的面试题: 给String对象添加一个方法,传入一个string类型的参数,然后将string的每一个字符间加空格返回,例如:addSpace("hello world&quo ...

  9. JS对象 String 字符串对象定义字符串的方法就是直接赋值。比如: var mystr = "I love JavaScript!"

    String 字符串对象 在之前的学习中已经使用字符串对象了,定义字符串的方法就是直接赋值.比如: var mystr = "I love JavaScript!" 定义mystr ...

随机推荐

  1. 五个常见 AI 开发库

    上一篇文章已经写过了,人工智能的发展不可谓不曲折,三起两落,不同的历史阶段,主流的研究方法不一样,开始时的 if-else 结构,简单的逻辑判断字符串匹配,到后期的穷举计算等,慢慢发展到现在的大数据与 ...

  2. linux 的21个命令:

    1:ls  [list] 2:输入输出重定向 3:| 管道 4:chmod 5:cd 6:mkdir 7:cp 8:rm 9:mv 10:cat 11:pwd 12:ln[link] 13:grep ...

  3. shell脚本快速配置yum源

    我们在使用Red Hat系列的Linux系统时经常要配置yum源,本文档提出一个快速配置yum源的方法,就是用shell脚本来实现. 我们在使用Red Hat系列的Linux系统时经常要配置yum源, ...

  4. python之set集合操作

    set集合天生具有去重功能 1.创建集合,集合的value类型:string.tuple.frozenset.数字等不可变类型: s1 =set()#空集合 s2=set(") s3=set ...

  5. CSS-11-外边距

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Linux 安装Jenkins

    1.安装jdk1.8 下载地址:https://github.com/frekele/oracle-java/releases 下载 root@123:~/my_java# wget https:// ...

  7. Java小白入门:聊聊Java这门编程语言

    一.什么叫做编程 首先我们应该了解一下什么叫做编程. 百度百科词条的解释: 编程是编定程序的简称,是让计算机代我们解决某个问题,是对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终 ...

  8. Shell使用技巧之逐行读取

    重定向读取 #!/bin/bash while read line do echo $line done < /etc/passwd 管道读取 #!/bin/bash cat /etc/pass ...

  9. day04_IDEA、方法

    day04_IDEA.方法 1.快捷输入 psvm:public static void main(String[] args){ } sout:System.out.print("&quo ...

  10. REST 风格架构

       ------------------------------ 时间不多了, 抓紧做一些有意义的事情 REST 风格架构   1. 他是面向资源进行开发的   2. 他是基于HTTP 协议进行开发 ...