这篇文章主要讲解了“Java字符串、数组和二叉搜索树实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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) { this.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<Integer> list = new ArrayList<Integer>(); 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<Integer> list){ if(root==null) return; method(root.left,list); list.add(root.val); method(root.right,list); } }
题目三
解法
class 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(); } }