字符串消消乐

给定一个由数字组成的字符串,要求你按照以下规则消除相邻的数字,并计算最终剩下的字符串长度:

• 当字符串中相邻的两个数字相加等于 10 时,这两个数字会被消除,剩下的部分会拼接成新的字符串,继续按照相同的规则消除。 • 每次消除只发生在相邻的数字之间,并且每次只会消除一对相邻数字。 • 你需要计算最终剩下的字符串长度,使得字符串无法再消除时的长度最小。

解题思路:

  • 用栈方法
  • 将字符串转为数字, 与'0'减法运算
  • 遍历,每逢当前元素和栈顶元素和为10,执行出栈(消除),否则入栈
  • 最终返回栈的长度
func minLengthAfterElimination(s string) int {
	  stack := []int{}
	  
	  // 遍历字符串中的每个字符
	  for i := 0; i < len(s); i++ {
	  	num := int(s[i] - '0') // 将字符转换为数字
	  	
	  	// 如果栈不为空且栈顶元素与当前元素之和为10,执行消除操作
	  	if len(stack) > 0 && stack[len(stack)-1]+num == 10 {
	  		// 消除栈顶元素
	  		stack = stack[:len(stack)-1]
	  	} else {
	  		// 否则将当前元素压入栈中
	  		stack = append(stack, num)
	  	}
	  }
	  
	  // 返回栈的长度即为最终剩余字符串长度
	  return len(stack)
}