劍指Offer之Java算法習(xí)題精講字符串與二叉搜索樹
題目一
字符串題——查找重復(fù)子字符串
根據(jù)給定的字符串按照指定條件判斷是都可以通過子串多次構(gòu)成
具體題目如下
解法
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ù)給定的字符串按照指定條件進(jìn)行判斷并返回結(jié)果
具體題目如下
解法
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é)點(diǎn)間最小差值
根據(jù)給定的二叉樹根節(jié)點(diǎn)返回任意兩個(gè)不同節(jié)點(diǎn)間最小差值
具體題目如下
解法
二叉搜索樹有個(gè)性質(zhì)為二叉搜索樹中序遍歷得到的值序列是遞增有序的
/** * 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); } }
題目四
字符串題——反轉(zhuǎn)字符串
根據(jù)給定的字符串按照指定條件反轉(zhuǎn)
具體題目如下
解法
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(); } }
到此這篇關(guān)于劍指Offer之Java算法習(xí)題精講字符串與二叉搜索樹的文章就介紹到這了,更多相關(guān)Java 二叉搜索樹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項(xiàng)訓(xùn)練
- 劍指Offer之Java算法習(xí)題精講鏈表與二叉樹專項(xiàng)訓(xùn)練
- 劍指Offer之Java算法習(xí)題精講二叉樹的構(gòu)造和遍歷
- 劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練
- 劍指Offer之Java算法習(xí)題精講數(shù)組與二叉樹
- 劍指Offer之Java算法習(xí)題精講鏈表與字符串及數(shù)組
- 劍指Offer之Java算法習(xí)題精講二叉搜索樹與數(shù)組查找
- 劍指Offer之Java算法習(xí)題精講數(shù)組與字符串題
- 劍指Offer之Java算法習(xí)題精講數(shù)組查找與字符串交集
相關(guān)文章
利用github搭建個(gè)人maven倉(cāng)庫(kù)的方法步驟
這篇文章主要介紹了利用github搭建個(gè)人maven倉(cāng)庫(kù)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12從零開始學(xué)springboot整合feign跨服務(wù)調(diào)用的方法
這篇文章主要介紹了從零開始學(xué)springboot整合feign跨服務(wù)調(diào)用的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03