剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树

网友投稿 255 2022-08-19


剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树

题目一

解法

class Solution {

public String reverseOnlyLetters(String s) {

char[] chars = s.toCharArray();

int left = 0;

int right = chars.length-1;

while(left<=right){

char tmp = 0;

if(chars[left]>='a'&&chars[left]<='z'||(chars[left]>='A'&&chars[left]<='Z')){

tmp = chars[left];

}else {

left++;

continue;

}

if(chars[right]>='a'&&chars[right]<='z'||(chars[right]>='A'&&chars[right]<='Z')){

chars[left] = chars[right];

chars[right] = tmp;

}else {

right--;

continue;

}

left++;

right--;

}

return new String(chars);

}

}

题目二

解法

/**

* Definition for a binary tree node.

* public class TreeNode {

* int val;

* TreeNode left;

* TreeNode right;

* TreeNode() {}

* TreeNode(int val) { tcUHgTLhis.val = val; }

* TreeNode(int val, TreeNode left, TreeNode right) {

* this.val = val;

* this.left = left;

* this.right = right;

* }

* }

*/

class Solution {

public TreeNode increasingBST(TreeNode root) {

ArrayList list = new ArrayList();

method(root,list);

TreeNode ans = new TreeNode(-1);

TreeNode cur = ans;

for(int i:list){

TreeNode node = new TreeNode(i);

cur.right = node;

cur = cur.right;

}

return ans.right;

}

public void method(TreeNode root,List list){

if(root==null) return;

method(root.left,list);

list.add(root.val);

method(root.right,list);

}

}

题目三

解法

clascUHgTLs Solution {

public int[] sortArrayByParity(int[] nums) {

int[] ans = new int[nums.length];

int left = 0;

int right = nums.length-1;

for(int i : nums){

if(i%2==0){

ans[left] = i;

left++;

}else{

ans[right] = i;

right--;

}

}

return ans;

}

}

class Solution {

public int[] sortArrayByParity(int[] nums) {

int left = 0;

int right = nums.length-1;

while(left<=right){

if(nums[left]%2==0){

left++;

continue;

}

if(nums[right]%2!=0){

right--;

continue;

}

if(nums[left]%2!=0&&nums[right]%2==0){

int tmp = nums[left];

nums[left] = nums[right];

nums[right] = tmp;

}

}

return nums;

}

}

题目四

解法

class Solution {

public boolean backspaceCompare(String s, String t) {

if(method(s).equals(method(t))) return true;

return false;

}

public static String method(String s){

int slow = 0;

char[] chars = s.toCharArray();

for (int i = 0; i < chars.length; i++) {

if(chars[i]=='#'){

chars[i] = 0;

slow = i;

while (true){

if(slow-1<0) break;

if (chars[slow-1]!=0){

chars[slow-1] = 0;

break;

}

slow--;

}

}

}

StringBuilder sb = new StringBuilder();

for(char i : chars){

if(i!=0) sb.append(i);

}

return sb.toString();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换
下一篇:剑指Offer之Java算法习题精讲二叉搜索树与数组查找
相关文章

 发表评论

暂时没有评论,来抢沙发吧~