zoukankan      html  css  js  c++  java
  • go 刷算法第二题——最长回文子串

    描述

    对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。

    给定字符串A以及它的长度n,请返回最长回文子串的长度。

    示例1

    输入:"abc1234321ab",12
    返回值:7

    思路: 穷举所有节点的方案。
    满足条件时,存在以下两种情况

    1. index节点为对称轴节点 [...,1,2,1,...]
    2. index节点为对称轴左边第一个节点,对称轴不在节点上 [...,1,1,...]
    package main
    
    import (
    	"strings"
    )
    
    func solve(s string) int {
    	// 括号用递归处理
    	// 加减乘除由于乘除优先级更高的特性,所以采用临时数组保存加减因子,加减因子上附加的乘除运算先进行
    	// 最后统计临时数组的所有加减因子之和
    
    	// 声明一个存放临时数据的数组
    	ints := make([]int, 0)
    	// 下一个待入数组的数据的运算符,第一个为“+”
    	var operator byte = '+'
    	// 运算数字因子
    	tempNum := 0
    	// 字符串转数组
    	chars := []byte(s)
    	l := 0
    	for i := 0; i < len(chars); i++ {
    		c := chars[i]
    		// 0~9 字符是数字
    		if c >= '0' && c <= '9' {
    			tempNum = 10*tempNum + int(c-'0')
    		}
    		if '(' == c {
    			l++
    			start, end := i+1, i+1
    			for l != 0 {
    				if chars[end] == ')' {
    					l--
    				}
    				if chars[end] == '(' {
    					l++
    				}
    				end++
    			}
    			i = end - 1
    			tempNum = solve(s[start:end])
    		}
    		if strings.Contains("+-*/", string(c)) || i == len(chars)-1 {
    			switch operator {
    			case '+':
    				ints = append(ints, tempNum)
    			case '-':
    				ints = append(ints, -tempNum)
    			case '*':
    				ints[len(ints)-1] *= tempNum
    			case '/':
    				ints[len(ints)-1] /= tempNum
    			}
    			tempNum = 0
    			operator = c
    		}
    
    	}
    	result := 0
    	for _, el := range ints {
    		result += el
    	}
    	return result
    }
    
    func main() {
    	println(solve("1+2"))
    	println(solve("((10+2)*10-(100-(10+20*10-(2*3)))*10*1*2)-2"))
    }
    
    
  • 相关阅读:
    JUC回顾之-可重入的互斥锁ReentrantLock
    java基础知识回顾之java Thread类学习(十二)-- 线程中断
    mknod命令
    一个公益水塘引发的纠纷
    对cgic的理解——name选项
    linux的fwrite()使用方法,当前时间写入文本的程序
    /etc/resolv.conf文件详解
    关于函数strtok和strtok_r的使用要点和实现原理
    shell视频
    进程一些命令pstree,ps,pstack,top
  • 原文地址:https://www.cnblogs.com/jiangdewen/p/15306073.html
Copyright © 2011-2022 走看看