劍指Offer之Java算法習題精講字符串與二叉搜索樹
題目一
字符串題——查找重復子字符串
根據(jù)給定的字符串按照指定條件判斷是都可以通過子串多次構成
具體題目如下
解法
class Solution { public boolean repeatedSubstringPattern(String a) { for (int i = 1; i <=a.length()/2 ; i++) { String s = a.substring(0, i); StringBuffer sb = new StringBuffer(); while (sb.length()<a.length()){ sb.append(s); } if(sb.toString().equals(a)){ return true; } } return false; } }
題目二
字符串題——查找大寫字母
根據(jù)給定的字符串按照指定條件進行判斷并返回結果
具體題目如下
解法
class Solution { public boolean detectCapitalUse(String word) { if(word.toLowerCase().equals(word)||word.toUpperCase().equals(word)||word.substring(1, word.length()).toLowerCase().equals(word.substring(1, word.length()))) return true; return false; } }
題目三
二叉樹題——查找二叉樹不同節(jié)點間最小差值
根據(jù)給定的二叉樹根節(jié)點返回任意兩個不同節(jié)點間最小差值
具體題目如下
解法
二叉搜索樹有個性質為二叉搜索樹中序遍歷得到的值序列是遞增有序的
/** * 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 { int ans; int pre; public int getMinimumDifference(TreeNode root) { ans = Integer.MAX_VALUE; pre = -1; method(root); return ans; } public void method(TreeNode root){ if(root==null){ return; } method(root.left); if(pre==-1){ pre = root.val; }else{ ans = Math.min(ans, root.val - pre); pre = root.val; } method(root.right); } }
題目四
字符串題——反轉字符串
根據(jù)給定的字符串按照指定條件反轉
具體題目如下
解法
class Solution { public String reverseStr(String a, int k) { int con = 1; StringBuffer sb = new StringBuffer(); while (con*k<=a.length()){ String substring = a.substring((con - 1) * k, con * k); if(con%2==0){ sb.append(substring); con++; }else { for (int i1 = substring.length()-1; i1 >=0 ; i1--) { sb.append(substring.charAt(i1)); } con++; } } if((con-1)*k<a.length()){ String s = a.substring((con-1) * k, a.length()); if(con%2!=0){ for (int i1 = s.length()-1; i1>=0; i1--) { sb.append(s.charAt(i1)); } }else { sb.append(s); } } return sb.toString(); } }
到此這篇關于劍指Offer之Java算法習題精講字符串與二叉搜索樹的文章就介紹到這了,更多相關Java 二叉搜索樹內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
從零開始學springboot整合feign跨服務調用的方法
這篇文章主要介紹了從零開始學springboot整合feign跨服務調用的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03