题目链接:1544整理字符串
题意:
给出一个字符串,如果相邻的两个字符 s[i] 是小写字符,s[i+1]是相同的大写字符,例如:e和E,那么这两个字符可以消掉,问最终的字符串为什么
解题思路:
用一个栈保存字符串,当后一个和栈顶的满足情况时,pop出栈顶元素,返回最终栈里的元素
因为今后可能要做PHP(要么就是GO)后端,为了练习,所以今后使用PHP写算法,但是算法思想都一样,只是换了个语言
代码
class Solution {
/**
* @param String $s
* @return String
*/
function makeGood($s) {
$k = strlen($s);
$a = [];
for($i = 0; $i < $k; $i++){
if(count($a) == 0){
array_push($a, $s[$i]);
}else if($s[$i] >= 'a' && $s[$i] <= 'z' && strtoupper($s[$i]) == end($a)){
array_pop($a);
} else if($s[$i] >= 'A' && $s[$i] <= 'Z' && strtolower($s[$i]) == end($a)){
array_pop($a);
} else {
array_push($a, $s[$i]);
}
}
$a = implode('', $a); // 将数组转换为字符串进行输出
return $a;
}
}