题解 | #字符串解码#正则表达式与递归求解

字符串解码

https://www.nowcoder.com/practice/4e008fd863bb4681b54fb438bb859b92

package main

import (
	"fmt"
	"regexp"
	"strconv"
	"strings"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return string字符串
 */
func decodeString(s string) string {
	// write code here
	var patRegexp = `[0-9]\[[a-z]*]`
	re, err := regexp.Compile(patRegexp)
	if err != nil {
		return ""
	}
	if re.MatchString(s) {
		UnicodeString(&s, re)
	}
	return s
}
func UnicodeString(s *string, re *regexp.Regexp) {

	newSlice := re.FindAllString(*s, -1)
	fmt.Println(newSlice)
	for i := 0; i < len(newSlice); i++ {
		var times = newSlice[i][0]
		var repeatString = newSlice[i][1:]
		repeatString = strings.TrimLeft(repeatString, "[")
		repeatString = strings.TrimRight(repeatString, "]")
		n, err := strconv.Atoi(string(times))
		if err != nil {
			return
		}
		repeatString = strings.Repeat(repeatString, n)
		*s = strings.Replace(*s, newSlice[i], repeatString, -1)
	}
	if re.MatchString(*s) {
		UnicodeString(s, re)
	}
}

#正则表达式##递归##go#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务