844. 比较含退格的字符串
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
示例 1:
输入:s = “ab#c”, t = “ad#c”
输出:true
解释:s 和 t 都会变成 “ac”。
为得到新的字符串result,需要对特殊符号做处理,当前第i个值不等于“#”时,result =result + s[i];
当前第i个值等于“#”时,移除最后一个元素;
注:js删除字符串最后一个元素我纠结了半天,最后用的result .substr(0,result .length -1)来实现的;
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var backspaceCompare = function(s, t) {
return backspaceArr(s) == backspaceArr(t);
};
var backspaceArr = function(s){
let j = 0;
let arr = '';
for(let i = 0; i < s.length; i++){
if(s[i] != '#'){
arr += s[i];
}else{
if(arr != ''){
// arr.pop();
// arr.slice(0,-1);
arr = arr.substr(0,arr.length -1);
}
}
}
return arr;
};
class Solution {
public:
bool backspaceCompare(string s, string t) {
string s1 = s_result(s);
string t1 = s_result(t);
return s1 == t1;
}
string s_result(string s){
int size = s.size();
string result;
for(int i = 0; i<size;i++){
if(s[i] != '#'){
result += s[i];
}else if(!result.empty()){
result.pop_back();
}
}
return result;
}
};
977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
双指针是通过移动数组首尾的两个下标值来比较当前数组的值,i表示左边的下标,j表示右边的下标,当nums[i]+nums[j] 的值小于0,表示nums[i]的绝对值大于nums[j],即nums[i]的平方大于nums[j]的平方,反之nums[i]的平方小于或等于nums[j]的平方,初始定义了一个长度为固定值的数组arr,nums[i]的绝对值大,就把nums[i]的平方的值赋值arr[arr.length-1],从后往前赋值,赋值完后,i++ 往后移位,反之nums[j]的绝对值,就把nums[j]的平方的值赋值arr[arr.length-1],j-- 往前移位;
var sortedSquares = function(nums) {
let i = 0;
let j = nums.length - 1;
let arr = new Array(nums.length).fill(0);
console.log(arr);
let count = nums.length - 1;
while(i<=j){
if(nums[i] + nums[j] < 0){
arr[count] = nums[i]*nums[i];
i++;
}else {
arr[count] = nums[j]*nums[j];
j--;
}
count --;
}
return arr;
};